ajax状态码是200,readystatus=4 json应该也没什么问题,但是一直进入error

weixin_42267526 2018-07-30 05:16:12
ajax代码
$.ajax({
type: 'POST',
url: 'http://localhost:19925/Admin/TestSimsX.asmx/getData',
data: {
id1: 33999,
id2: 34022
},
dataType:'json',
async: false, //不是异步处理
success: function (res) {
console.log(res.d);

},
error: function (res) {
},
});
后台返回的json
{
"sysTime": "2018-07-30 17:14:38",
"simStatus": "运行",
"runTime": "0:0:36:33",
"fuhe": "1.5",
"pressure": "1.052722E+09",
"tem": "1.114334E+09"
}
...全文
351 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42267526 2018-08-03
  • 打赏
  • 举报
回复
引用 10 楼 zc_1994 的回复:
错误信息是这个吗,如果是的话,应该是后台nginx转发时限制了文件大小

不是这个,我没有报错,就是直接进入error方法
weixin_42267526 2018-08-03
  • 打赏
  • 举报
回复
引用 9 楼 ambit_tsai 的回复:
[quote=引用 8 楼 weixin_42267526 的回复:]
[quote=引用 7 楼 lqlqlq007 的回复:]
后台返回的是一个JSON字符串吧,其实应该返回一个JSON对象。

我给改成text了,然后将text转成json了[/quote]
7楼是错的,后端返回的JSON数据,前端接收到的都是字符串。
配置dataType:'json'后,ajax接收到会自动帮你转成JSON对象。
有可能是你回传的JSON数据不符合要求,比如

data={"sysTime":"2018-07-30 17:14:38","simStatus":"运行","runTime":"0:0:36:33","fuhe":"1.5","pressure":"1.052722E+09","tem":"1.114334E+09"}

既然报错,那就把错误信息贴出来,大家好分析。[/quote]
没有报错,就是ajax从后端c#获取数据后直接进入error方法,其他都正常。我c#返回的json字符串用校验工具校验过了,是正确的。
weixin_42267526 2018-08-03
  • 打赏
  • 举报
回复
引用 13 楼 Logerlink 的回复:
先确保asmx能正常编译,如果可以正常使用
可能是你webService里面用return返回回来的问题,应该换成这种返回方式 用Response返回

[WebMethod]
public void GetDataObj(int id1, int id2)
{
string[] keyArr = { "sysTime", "simStatus", "runTime", "fuhe", "pressure", "tem" };
string[] valueArr = { "2018-07-30 17:14:38", "运行", "0:0:36:33", "1.5", "1.052722E+09", "1.114334E+09" };
Dictionary<string, string> dic = new Dictionary<string, string>();
int number = 0;
foreach (var item in keyArr)
{
dic.Add(item, valueArr[number]);
number++;
}

Context.Response.ContentType = "text/plain;charset=utf-8";//解决乱码
Context.Response.Write(JsonConvert.SerializeObject(dic));
Context.Response.End();
}

说的太对了,我就是用的return。感谢感谢!!!
milk13 2018-08-03
  • 打赏
  • 举报
回复
$.ajax({
type: 'POST',
url: 'http://localhost:19925/Admin/TestSimsX.asmx/getData',
data:JSON.stringify({
id1: 33999,
id2: 34022
}),
dataType:'json',
async: false, //不是异步处理
success: function (res) {
console.log(res.d);

},
error: function (res) {
},
});
Logerlink 2018-08-03
  • 打赏
  • 举报
回复
先确保asmx能正常编译,如果可以正常使用
可能是你webService里面用return返回回来的问题,应该换成这种返回方式 用Response返回

[WebMethod]
public void GetDataObj(int id1, int id2)
{
string[] keyArr = { "sysTime", "simStatus", "runTime", "fuhe", "pressure", "tem" };
string[] valueArr = { "2018-07-30 17:14:38", "运行", "0:0:36:33", "1.5", "1.052722E+09", "1.114334E+09" };
Dictionary<string, string> dic = new Dictionary<string, string>();
int number = 0;
foreach (var item in keyArr)
{
dic.Add(item, valueArr[number]);
number++;
}

Context.Response.ContentType = "text/plain;charset=utf-8";//解决乱码
Context.Response.Write(JsonConvert.SerializeObject(dic));
Context.Response.End();
}
zc_1994 2018-08-02
  • 打赏
  • 举报
回复
错误信息是这个吗,如果是的话,应该是后台nginx转发时限制了文件大小
ambit_tsai-微信 2018-08-01
  • 打赏
  • 举报
回复
引用 8 楼 weixin_42267526 的回复:
[quote=引用 7 楼 lqlqlq007 的回复:]
后台返回的是一个JSON字符串吧,其实应该返回一个JSON对象。

我给改成text了,然后将text转成json了[/quote]
7楼是错的,后端返回的JSON数据,前端接收到的都是字符串。
配置dataType:'json'后,ajax接收到会自动帮你转成JSON对象。
有可能是你回传的JSON数据不符合要求,比如

data={"sysTime":"2018-07-30 17:14:38","simStatus":"运行","runTime":"0:0:36:33","fuhe":"1.5","pressure":"1.052722E+09","tem":"1.114334E+09"}

既然报错,那就把错误信息贴出来,大家好分析。
weixin_42267526 2018-08-01
  • 打赏
  • 举报
回复
引用 7 楼 lqlqlq007 的回复:
[quote=引用 6 楼 weixin_42267526 的回复:]
[quote=引用 5 楼 lqlqlq007 的回复:]
把 dataType:'json', 去掉看看能不能正常响应,个人感觉是返回的消息无法用JSON解析导致走到error。

去掉dataType也会直接进入error,把dataType改成'text'是可以进入success的,但是我后台返回的json数据在工具中校验了,是正确的。[/quote]

后台返回的是一个JSON字符串吧,其实应该返回一个JSON对象。[/quote]
我给改成text了,然后将text转成json了
weixin_42267526 2018-07-31
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:
可能是跨域了,前端ajax不能跨域提交

没有跨域呀,就是这个系统的地址
weixin_42267526 2018-07-31
  • 打赏
  • 举报
回复
引用 1 楼 zzgzzg00 的回复:
看下有没有跨域

没有跨域呀,就是这个系统的地址
讨厌走开啦 2018-07-31
  • 打赏
  • 举报
回复
引用 6 楼 weixin_42267526 的回复:
[quote=引用 5 楼 lqlqlq007 的回复:]
把 dataType:'json', 去掉看看能不能正常响应,个人感觉是返回的消息无法用JSON解析导致走到error。

去掉dataType也会直接进入error,把dataType改成'text'是可以进入success的,但是我后台返回的json数据在工具中校验了,是正确的。[/quote]

后台返回的是一个JSON字符串吧,其实应该返回一个JSON对象。
weixin_42267526 2018-07-31
  • 打赏
  • 举报
回复
引用 5 楼 lqlqlq007 的回复:
把 dataType:'json', 去掉看看能不能正常响应,个人感觉是返回的消息无法用JSON解析导致走到error。

去掉dataType也会直接进入error,把dataType改成'text'是可以进入success的,但是我后台返回的json数据在工具中校验了,是正确的。
讨厌走开啦 2018-07-31
  • 打赏
  • 举报
回复
把 dataType:'json', 去掉看看能不能正常响应,个人感觉是返回的消息无法用JSON解析导致走到error。
天际的海浪 2018-07-30
  • 打赏
  • 举报
回复
可能是跨域了,前端ajax不能跨域提交
似梦飞花 2018-07-30
  • 打赏
  • 举报
回复
看下有没有跨域

87,845

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧