【问题标题】:JSONP Parse Error with valid JSON Output具有有效 JSON 输出的 JSONP 解析错误
【发布时间】:2016-08-04 15:00:33
【问题描述】:

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

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

此外,在控制台中,我得到的错误是 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":""}}

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

【问题讨论】:

  • 你能分享myJsonMethod代码吗?
  • 您需要将 json 包装在 myJsonMethod(...yourJSONhere...) 中。这意味着 JSONP
  • 有效 JSON 与有效 JSONP 不同。这就是问题所在 - 您正在尝试使用返回 JSON 的 API,就好像它是 JSONP API 一样,这根本行不通。
  • 谢谢各位!!!如果服务器没有自动提供 JSONP 支持,强制包装它并且它可以工作:D

标签: javascript jquery json ajax jsonp


【解决方案1】:

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

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

【讨论】:

  • 非常感谢。我不得不在服务器端手动包装它以使其看起来像那样并且它工作得很好。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 2011-11-03
    • 2013-07-10
    • 2016-09-10
    • 1970-01-01
    相关资源
    最近更新 更多