Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jquery解析JSON_Jquery_Ajax_Json - Fatal编程技术网

使用Jquery解析JSON

使用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:

我有一个页面,可以快速登录检查并访问一些JSON数据的web服务。它返回的数据如下所示:

{ '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寻求帮助,因为#$^*无法正常工作。抱歉!忘记了包装花括号…在回答中修复了它。