gpt4 book ai didi

javascript - $.getJSON 在成功的 http 请求上失败

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:10:10 26 4
gpt4 key购买 nike

我在我的页面中调用方法:

var dfd = $.Deferred(
$.getJSON(serviceAddress)
.done(function (result, status) {
bo.BusinessObject.DtosToaKoArray(result, resultList);
dfd.resolve(resultList);
})
.fail(function (result, status) {
logger.logError(result);
dfd.reject(result);
}));

return dfd;

调用 JSON 后,firebug 显示 HttpRequest 成功,响应 header 如下:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?RDpcV29ya3NwYWNlc1xNZWhyYW5cSW5mcmFzdHJ1Y3R1cmVcTWFpblxTb3VyY2VcSW5mcmFzdHJ1Y3R1cmVcU291cmNlXENhcmFuZS5HYWxheHkuV2ViQXBpXGFwaVxEYXRhUHJvdmlkZXJcTGlzdFNlcnZpY2Vc?=
X-Powered-By: ASP.NET
Date: Sun, 04 Aug 2013 05:57:39 GMT
Content-Length: 6684

但问题是 done 回调,fail 回调被调用,结果如下:

Object { readyState=4, status=404, statusText="error"}

我的调用失败了成功的 http 请求有什么问题?

编辑1.

我的网站 (MyApp.Web) 在 localhost:2771 上,调用服务在 localhost:4143 上的另一个项目 (MyApp.WebApi) 中

最佳答案

您肯定会在尝试发出跨源请求时遇到一些障碍。 That includes port-to-port .

解决方案还取决于服务及其支持的功能。

  • JSONP (或者,带填充的 JSON)

    该服务需要接受 callback并输出包含在函数调用中的 JSON:

    // http://...?callback=completeRequest
    completeRequest(["json", "data"]);

    参数名称可以不同于callback .但是,您可以通过包含一个占位符参数 (...=?) 来指示 jQuery 使用它:

    $.getJSON(serviceAddress + "?callback=?")

    这也可以在任何浏览器中使用,因为它被请求为 <script src>并且 JSON 将被解析为 JavaScript literals .

  • CORS

    服务需要支持preflight, OPTIONS requests并回复 Access-Control-Allow-* headers .

    同时,most current browsers support CORS ,如果您需要支持旧版本,这可能会受到限制。

否则,您将需要在您的应用程序 (localhost:2771) 中创建一个代理目标,使跨源请求服务器端到服务 (localhost:4143)。

关于javascript - $.getJSON 在成功的 http 请求上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18040427/

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