我使用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搞砸了。
答案 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>
标记中,控制台会抛出错误的