gpt4 book ai didi

c# - 资源解释为脚本但使用 MIME 类型 application/json 传输。 &解析器错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:16:30 25 4
gpt4 key购买 nike

好的,所以我在桌面上的 .html 文件中有一个 JQuery AJAX 调用。它调用位于以太网络服务器上的 WCF 服务。

好消息是它有效。有点……几乎……但不完全是。

AJAX 调用将执行,Fiddler 显示来自网络服务的 JSON 响应。不幸的是,它并没有一路回到浏览器。 callback=? 在那里,所以我不会收到跨站点脚本错误。 (访问控制等等等等)

如果我在打开 Chrome 开发工具的情况下执行此操作,它会给我以下消息:

Resource interpreted as script but transferred with MIME type application/json

成功:回调没有被调用,错误:回调在状态文本中返回一个单词:parsererror

我整天都在为这个问题苦思冥想。

function AJAXGet() {
$.ajax({
url: "http://xxxx/yyyyService/yyyyService.svc/GetZZZ?callback=?",
dataType: 'json',
data: JSON.stringify('{"customerID": "1"}'),
contentType: "application/json; charset=utf-8; application/x-javascript",
success: function (data) {
alert(data);
},
complete: function (data) {
alert(data);
},
error: function (xhr) {
alert("AJAXGetError: " + xhr.statusText);
}
});
}

Fiddler 说这是发送的内容: GET/yyyyService/yyyyService.svc/GetZZZ?callback=jQuery150833801421286173_1297309350515&%22{\%22yyyyID\%22:%20\%221\%22}%22&_=1297309350540 HTTP/1

这是 WCF:

[OperationContract]
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
List<Note> GetNotes(string yyyyID)

最佳答案

您正在使用 JSONP - 您的服务器端代码必须支持它。在这种情况下,您的 WCF 服务应该返回一个 script-let,例如 [callback name]([json string]) 其中 [callback name] 将是 jquery 生成的 js函数(您在 fiddler 请求中看到的回调值)和 [json string] 将是来自服务的常用 JSON 数据。所以检查fiddler中的响应。如果您的服务没有返回 JSONP 响应,那么您需要在服务端添加该支持。

检查 this有关如何在 .NET 4 中执行此操作的文章(支持 JSONP)。对于 .NET 3.5,它的工作更多 - 请参阅 this MSDN article用于扩展 WCF 以支持 JSONP。另一个快速 hack(对于 .NET 3.5)可能是构建 HttpModule,它将监视 JSON 请求并在请求 url 具有 callback 参数时修改响应。

关于c# - 资源解释为脚本但使用 MIME 类型 application/json 传输。 &解析器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4953232/

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