gpt4 book ai didi

javascript - jQuery.ajax() 无法向某些 URL 发送请求,但不会向其他 URL 发送请求

转载 作者:数据小太阳 更新时间:2023-10-29 06:12:21 24 4
gpt4 key购买 nike

在我们的 Rails 应用程序中,我们有一个内联编辑功能,可以将 PUT 更改回服务器。 PUT 的 URL 根据正在编辑的对象类型/用户所在的页面而变化,但相同的 JavaScript 支持所有页面上的功能。我遇到了一个问题,即 jQuery 的 AJAX 请求有时会在不接触服务器的情况下失败,并且除了“错误”之外,它们没有给出任何错误消息。我一直试图在控制台中对此进行调试,但没有成功。极其奇怪的部分是,它似乎是由于传递给 $.ajax() 的 URL 中的某些内容导致了问题。

在控制台中,这按预期工作:

> errorCallback = function( jqxhr, status, err ){
console.log( "Ajax call encountered an error: '" + status + "'" );
console.log( jqxhr );
console.log( err );
};
> options = { type: 'PUT', error: errorCallback, data: { cerebro: true, name: 'cerebro-edit-span-2-title', pk: null, value: 'Test' }, url: '/staff/employees/2.json' };
> test1 = $.ajax( options );
> test1.readyState;
4

所以我可以看到 AJAX 请求正常完成,没有触发错误回调,最终 readyState 为 4,符合预期。但是现在看看我是否只更改了 URL 的中间部分:

> options.url = '/staff/job_advertisements/2.json';
> test2 = $.ajax( options );
Ajax call encountered an error: 'error'
Object {readyState: 0, getResponseHeader: function, ... } // elided for clarity

X PUT http://localhost:3000/staff/job_advertisements/2.json jquery.js:8527
> test2.readyState;
0

使用这个不同的 URL,AJAX 调用甚至在到达应用程序服务器之前就失败了!查看开发机器的日志显示,从未对 /staff/job_advertisements/2.json 发出任何请求——也就是说,问题不可能是由于服务器返回 500 或 404 或其他错误代码,因为服务器甚至没有从浏览器接收请求。只是为了证明问题出在客户端,而不是服务器端(并排除它与下划线有关的可能性)我尝试将 URL 设置为应用程序中实际上不存在的一些无意义的值:

> options.url = '/staff/jobadvertisements/2.json';
> test3 = $.ajax( options );
X PUT http://localhost:3000/staff/jobadvertisements/2.json 500 (Internal Server Error) jquery.js:8527
Ajax call encountered an error: 'error'
Object {readyState: 4, getResponseHeader: function, ... } // elided for clarity

> test3.readyState;
4
> options.url = '/staff/empl_oyees/2.json';
> test4 = $.ajax( options );
X PUT http://localhost:3000/staff/empl_oyees/2.json 500 (Internal Server Error) jquery.js:8527
Ajax call encountered an error: 'error'
Object {readyState: 4, getResponseHeader: function, ... } // elided for clarity

> test4.readyState;
4

在测试 3 和 4 中,我还在应用程序日志中看到请求、500 状态代码和由此产生的异常,而在测试 2(失败案例)中没有日志行。因此测试 3 和 4 证明请求路径不存在不是问题,因为当请求路径不存在时,错误消息包含 500 状态代码并且 readyState 仍设置为4. 他们还证明不允许使用下划线不是问题。

我搜索了关于 ajax() 方法的 jQuery 文档,但找不到任何帮助,所以... javascript/jQuery 专家,我把这个留给你:它是什么关于可能导致 jQuery AJAX 请求在发送之前就失败的 URL?更重要的是,我该如何解决这个问题?

最佳答案

您是否启用了 AdBlock [Plus]?如果是这样,它会默默地阻止对包含 广告 的 URL 的所有请求。或者,看起来是这样,_advertisements

关于javascript - jQuery.ajax() 无法向某些 URL 发送请求,但不会向其他 URL 发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15691717/

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