JSONP 具有有效 JSON 输出的解析错误

JSONP Parse Error with valid JSON Output

我正在使用 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);
        }
    });

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

此外,在控制台中我收到错误 Uncaught SyntaxError: Unexpected token : 响应结构为:

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

当我 运行 这个 JSON 在 jsonlint 上输出时它说它是一个有效的 JSON。我不知道 JSON 哪里搞砸了。

您的数据必须像这样才能对 JSONP 有效:

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

响应文本必须是有效的 js 代码,如果您编写代码

,当响应为 over.So 时,它会立即 运行

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

<script> 标签中,控制台会抛出这样的错误