gpt4 book ai didi

javascript - JSONP 调用产生解析器错误,未调用回调函数

转载 作者:行者123 更新时间:2023-11-28 02:10:16 24 4
gpt4 key购买 nike

我正在对另一个域执行以下 AJAX 调用。

  $.ajax({
url: "http://.../MyService.svc/Ping",
dataType: 'jsonp',
jsonp: 'callback',
processData: false,
jsonpCallback: 'jsonCallback',
success: function (a, b, c) { notify("Wheee..."); },
error: function (a, b, c) { notify("Buuu... " + a + "-" + b + "-" + c); }
});

我获得连接,状态为200 OK。但是,我收到对 error 方法的调用,该方法通知我 parsererrorjsonCallback 未调用。我看到被调用的 URL 看起来像这样。

[12:29:55.807] GET =1371724195683">http://.../MyService.svc/Ping?callback=jsonCallback&=1371724195683 [HTTP/1.1 200 OK 1912ms]

该服务配置为提供 JSON 格式。如果我在浏览器的 URL 行中手动输入调用,屏幕上的响应会这样显示。

"jsonCallback(pong @ 10:38:46 20-Jun-2013)"

我不知道我错过了什么。 (这可能是直截了当的事情,但我很烦躁,我的烦恼阻碍了我意识到那可能是什么。)

编辑:

在指出返回的 JSON 对象的有效性是强制性的之后,我通过浏览器的 URL 行测试了一些不同的输出,如下所列。尽管从 JS 进行调用时,这些似乎都没有改变 parsererror 问题。我还能做错什么?

"{result: \"pong at 12:42:06 20-Jun-2013\"}"
"jsonCallback('{result: \"pong at 12:49:54 20-Jun-2013\"}')"

编辑:

@.ajax的解析器实际上非常宽容。但是,需要在 web.config 中激活跨域脚本访问,如下所示。并确保您在正确端点上执行此操作。

<webHttpBinding>
<binding name="UrlHttpBindingJsonP"
crossDomainScriptAccessEnabled="true"/>
</webHttpBinding>

参见this article .

最佳答案

jsonCallback(pong @ 10:38:46 20-Jun-2013)

这不是有效的 JavaScipt。首先,参数应该用引号引起来,因此它是一个字符串。

jsonCallback("pong @ 10:38:46 20-Jun-2013")

不确定这是否真的重要,但普通的旧字符串仍然不是有效的 JSON*。您可能需要将其包装在对象或数组中。试试这个:

jsonCallback({"result": "pong @ 10:38:46 20-Jun-2013"})

*如果您接受 Crockford 的定义。看看评论。

关于javascript - JSONP 调用产生解析器错误,未调用回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17211555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com