使用Jquery解析JSON
我有一个页面,可以快速登录检查并访问一些JSON数据的web服务。它返回的数据如下所示:使用Jquery解析JSON,jquery,ajax,json,Jquery,Ajax,Json,我有一个页面,可以快速登录检查并访问一些JSON数据的web服务。它返回的数据如下所示: { 'RESPONSE' : 'INVALID','CAMPAIGNID' : '0','MORELINK' : '' } 我用于获取此数据并尝试根据信息弹出模式窗口的代码是: $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url:
{ 'RESPONSE' : 'INVALID','CAMPAIGNID' : '0','MORELINK' : '' }
我用于获取此数据并尝试根据信息弹出模式窗口的代码是:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Login.asmx/Logon",
data: strData,
dataType: "json",
success: function (response) {
$('#divResp').html(response.d);
$(response.d).each(function(index,item){
alert(item.campaignid);
});
if (res.indexOf('invalid') >= 0){
//invalid account information UNP
foo = "You entered an invalid account number or password";
showDialog('screenActivate.asp',test_imgName);
}
if (res.indexOf('none') >=0) {
//do not deliver splash screen
foo = "No splash screen for YOU!";
}
if (res.indexOf('error') >=0) {
//general error
foo = "You entered an error";
}
if (res.indexOf('frozen') >=0) {
//member is locked out from numberous failed attempts
foo = "You have too many failed attempts. Your account has been locked";
}
if (res.indexOf('.png') >=0) {
imgName = (response.d);
showDialog('screenActivate.asp',test_imgName);
}
alert(foo);
$('#divResp').html(response.d);
}
});
$('#divQuery').ajaxError(function(evt, request, settings){
$('#divResp').html("Web services timeout. Please try again.");
});
}
挑战在于,要么我没有得到任何信息(未定义),要么就像当前迭代一样,Firebug的一个错误指出了未捕获的异常:语法错误,无法识别的表达式:“无效”
我没有正确解析JSON响应吗
回答相关评论
我将:
“d”:“{'RESPONSE':'INVALID','CAMPAIGNID':'0','MORELINK':'''}”
粘贴到jsonlint.com中,该工具说JSON是有效的。当我尝试用each语句循环response.d
时,它似乎是一个字符接一个字符。JSON规范要求使用双引号(“
)而不是单引号(”
)
官方JSON字符串解析图(来自)
回应您的评论…
好吧,就这么定了
"d":"{ 'RESPONSE' : 'INVALID','CAMPAIGNID' : '0','MORELINK' : '' } "
是有效的JSON…但它只是一个包含字符串的d
属性的对象
"{ 'RESPONSE' : 'INVALID','CAMPAIGNID' : '0','MORELINK' : '' } "
按照您期望的方式工作的数据如下所示
{"d": {"RESPONSE":"INVALID","CAMPAIGNID":"0","MORELINK":""}}
除了(+1),您还引用了未定义的变量
res
。始终首先验证repsonse,例如。在您的情况下,您肯定没有获得有效的JSON。在解决JSON数据问题时,我删除了res的声明。正确的做法是,alert()为。:)我粘贴了:“d”:{'RESPONSE':'INVALID','CAMPAIGNID':'0','MORELINK':''}“进入jsonlint.com,该工具说JSON是有效的。当我尝试使用each语句循环response.d时,它似乎是一个字符接一个字符。好的,我已经正确地编码了JSON,但我仍然没有遍历对象并获得名称/值对。如果我提醒返回,它只会给我object[object]如何确定JSON内容?我想知道活动ID,以及是否存在morelink。对象不是要迭代的…只需执行以下操作…if(response.d.morelink.length>0){alert(response.d.campaignid);}
我收到一个响应。d.MORELINK是Firebug中未定义的错误。我愿意粘贴代码,但它与您在上面键入的完全相同。这就是为什么我转向Stack寻求帮助,因为#$^*无法正常工作。抱歉!忘记了包装花括号…在回答中修复了它。