有效JSON输出的JSONP解析错误

时间:2016-08-04 15:00:33

标签: javascript jquery json ajax jsonp

我使用JSONP调用跨域AJAX请求。现在,我能够使用CORS使其工作。但是,我想知道为什么JSONP没有发生这种情况。我查看了其他类似问题的线程,但无法弄清楚为什么它在我的情况下不起作用。

以下是代码:

 $.ajax({
        type: "GET",
        url: http://XXXX:8000/sap/bc/test_rest/jsonp_test?mode=S&ticket=123,
        dataType: "jsonp",
        jsonp: false,
        jsonpCallback: "myJsonMethod",
        success: function (data) {
            alert(data);
        },
        error: function (httpReq, status, exception) {
            alert(status + " " + exception);
        }
    });

现在,这会调用我的服务器,数据已填充,然后我收到警报" 解析错误 myJSONMethod未被调用"在回调网址http://xxxx:8000/sap/bc/test_rest/jsonp_test?mode=S&ticket=123&_=1470322282936

此外,在控制台中我收到错误未捕获的SyntaxError:意外的令牌: 响应结构是:

{"ROOT":{"CONTRACT":"40002356","ITEM":"000010","KUNNR":"0000004676","NAME":"REALTY EXECUTIVES","NET_PRICE":19.95,"GROSS_PRICE":19.95,"MATNR":"144","SQFEET":""}}

当我在jsonlint上运行此JSON输出时,它表示它是一个有效的JSON。我不知道JSON搞砸了。

2 个答案:

答案 0 :(得分:1)

您的数据必须如此对JSONP有效:

myJsonMethod({"ROOT":{"CONTRACT":"40002356","ITEM":"000010","KUNNR":"0000004676","NAME":"REALTY EXECUTIVES","NET_PRICE":19.95,"GROSS_PRICE":19.95,"MATNR":"144","SQFEET":""}});

答案 1 :(得分:1)

responsetext必须是有效的js代码,当响应结束时它会立即运行。所以如果你编写代码

  

{ “ROOT”:{ “合同”: “40002356”, “项目”: “000010”, “KUNNR”: “0000004676”, “NAME”:“REALTY   高管”, “NET_PRICE”:19.95, “GROSS_PRICE”:19.95, “MATNR”: “144”, “SQFEET”: “”}}

<script>标记中,控制台会抛出错误的