jQuery的Ajax请求被取消而不被发送

我正在尝试将脚本连接到微软的全球望远镜应用程序。 后者在端口5050上侦听命令。 它运行在浏览器的同一台机器上(Chrome现在,但据我所知,其行为与Firefox 7和IE 9相同)。

我正在发送一个“Access-Control-Allow-Origin:*”标题与原始的html文件,试图消除XSS限制作为我的问题。

我访问WWT的代码如下:

$.ajax({ type: 'POST', url: url, data: data, crossDomain: true, success: success, dataType: dataType }); 

在这种情况下,URL是“http://127.0.0.1:5050 / layerApi.aspx?cmd = new&…”(显然…在这里是一些附加参数的简写)。

在Chrome浏览器中查看networking诊断信息,我可以看到:

 Request URL:http://127.0.0.1:5050/layerApi.aspx?cmd=new&... Request Headersview source Accept:application/xml, text/xml, */*; q=0.01 Content-Type:application/x-www-form-urlencoded Origin:http://gwheeler4 Referer:http://gwheeler4/conceptconnect.html User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1 

请求正在出去 – 我看到WWT做了一个新层。 但是,我没有得到callback。 如果我添加一个被调用的错误callback,但jqXHR对象的错误属性只是“错误”,状态是0.如果我看在Chrome浏览器中的networking请求,我看到“(取消)”作为状态,没有回应。

如果我采用相同的URL并将其粘贴到新的浏览器选项卡中,则可以看到该响应是预期的XML。

当然,这里有一个区别是,这是一个GET而不是POST,但是我已经在脚本中试过了,没有任何区别。

我很难受这个,并会欣赏任何新的想法。

如果有其他人遇到这个问题,我们遇到的问题是我们正在从链接发出ajax请求,而不是阻止链接被跟踪。 所以如果你在onclick属性中做这个,确保return false; 以及。

如果您使用的是Chrome,则无法在标准的Chromenetworking面板中看到足够的信息来确定(canceled)请求的根本原因。

您需要使用chrome://net-internals/#events来显示您要发送的请求的血腥细节 – 包括关于发送cookie的隐藏redirect/安全信息等。

例如下面显示的redirect,我没有看到在networking跟踪 – 由我的cookies不被发送跨子域:

 t=1374052796448 [st= 1] +URL_REQUEST_START_JOB [dt=261] --> load_flags = 143540481 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | ENABLE_LOAD_TIMING | MAYBE_USER_GESTURE | REPORT_RAW_HEADERS | VALIDATE_CACHE | VERIFY_EV_CERT) --> method = "GET" --> priority = 2 --> url = "https://...." ... t=1374052796708 [st=261] HTTP_TRANSACTION_READ_RESPONSE_HEADERS --> HTTP/1.1 302 Moved Temporarily Content-Type: text/html Date: Wed, 17 Jul 2013 09:19:56 GMT ... t=1374052796709 [st=262] +URL_REQUEST_BLOCKED_ON_DELEGATE [dt=0] t=1374052796709 [st=262] CANCELLED t=1374052796709 [st=262] -URL_REQUEST_START_JOB --> net_error = -3 (ERR_ABORTED) 

我有一个类似的问题。 在我的情况下,我想在apache服务器+ django上使用Web服务(服务是由我自己编写的)。 我的输出和你一样:Chrome说FF被取消了。 如果我试图直接在浏览器上访问服务而不是Ajax,那么也可以。 search一下,我发现一些较新版本的Apache没有在响应头中正确设置响应的长度,所以我手动做了这个。 与Django,我只需要做的是:

 response['Content-Length'] = len(content) 

如果您可以控制所尝试访问的服务,请了解如何修改所使用平台中的响应标头,否则,您必须联系服务提供商来解决此问题。 显然,FF和许多其他浏览器都能够正确处理这种情况,但Chromedevise师决定按照指定的方式进行。

我有一个类似的问题。 使用chrome:// net-internals /#事件我能够看到我的问题是由于一些沉默的redirect。 我的获取请求正被onload脚本触发。 该url的forms是“ http://example.com/inner-path”,301被永久redirect到“/ inner-path”。 要解决这个问题,我只是将URL更改为“/内部path”,并解决了这个问题。 我仍然不知道为什么一个星期前工作的脚本突然给我的问题…希望这可以帮助一个人

(使用Web窗体ASP.NET)

我的问题是我试图触发一个提交button,有一个服务器端单击事件设置的单击事件的Ajax。 我不得不让button只是一个简单的button(即<input type="button">

使用http向需要https的url发出请求时,出现此错误。 我猜ajax调用不处理redirect。 即使crossDomain ajax选项设置为true(在JQuery 1.5.2上)也是如此。

我有同样的问题,对我来说,我创build的临时方式的iframe,我是在ajax成为完成之前删除iframe,所以浏览器将取消我的ajax请求。

在我的情况下,我的Apache的mod重写是匹配的url,并将请求redirect到https。

在chrome:// net-internals /#events中查看请求。

它将显示请求的内部日志。 检查redirect。

我有同样的问题,但在我看来,这是一个cookie问题。 在后台工作的人已经改变了我们login到应用程序时设置的JSESSIONID cookie的path,并且在我的电脑上有一个旧的cookie,但是有旧的path。 所以当我尝试login浏览器(Chrome)发送两个名为JSESSIONID的cookie,以不同的值,给服务器 – 这是可以理解的困惑 – 所以它取消了请求。 从我的电脑删除cookies修复了它。

我有一个更奇怪的方式,这个错误:networking选项卡和chrome:// net-internals /#事件没有显示请求后js完成。 当在错误callcack中暂停js时,networking选项卡确实将请求显示为(取消)。 在网页中一直要求几个相同的请求中的一个(总是相同的)请求。 重新启动Chrome后,错误不再上升!

在Firefox中取消了 。 一些Ajax调用对我来说工作得很好,但是实际上不得不使用它的同事失败了。

当我通过上面提到的Chrome技巧检查出来的时候,我没有发现任何可疑的东西。 当在萤火虫中检查它时,它会在两个繁忙的电话之后显示“加载”animation,而没有结果标签。

解决scheme非常简单:去历史,find网站,右键单击 – >忘记网站。
忘记,不要删除。

之后,没有问题了。 我的猜测是它与.htaccess有关。

我有一个特定的3Gnetworking这个问题。
在chrome:// net-internals /#events中,使用net_error = -101 DELETE请求总会失败。

其他networking工作得很好,所以我认为有一个错误的代理服务器或东西。

在我的情况下,这是在URL中丢失的斜线。 添加尾部的斜线解决了我的问题。

在我的情况下,我有type='submit'所以当我提交表单时,页面在ajax打开之前重新加载,所以简单的解决scheme是使用type="button"