Tag: jqxhr

使用完成/失败/完成回调延迟JQuery Ajax(jqXHR)请求

当我使用成功回调时,这个解决方案工作正常,但是当我使用.done()这个失败时,我怎样才能重新发送带有原始.done()。fail()和complete()注册回调的入队ajax请求? var requestQueue = []; $.ajaxSetup({ cache: false, beforeSend: function (jqXHR, options) { if(true){ //any condition ‘true’ just demonstrate requestQueue.push({request:jqXHR,options:options}); //simulate process this queue later for resend the request window.setTimeout(function(){ //this will work with success callbak option, //but with .done() the console.log(“Well Done!”); // will fail $.ajax($.extend(requestQueue.pop().options, {global:false, beforeSend:null})); }, 3000) return false; } } […]

从jQuery AJAX读取HTTP状态/错误代码的问题

我正在尝试正确处理可能由jQuery中的任何AJAX调用返回的HTTP状态错误(404,501等)(我使用的是1.6.4版)但是对于我的生活我无法脱身适当的响应代码(所有值都是’0’或’错误’,没有更具体的)。 更新:在这里创建了一个JSFIDDLE 更新:添加statusCode: { *** }根据3nigma的建议但不会触发 function doAjax() { $.ajax({ type: “GET”, url: “http://www.non-existant-url.com/”, success: function(data, textStatus, jqXHR){ alert(“Success”); }, error: function (xhr, textStatus, errorThrown) { console.log(“xhr.status: ” + xhr.status); console.log(“xhr.statusText: ” + xhr.statusText); console.log(“xhr.readyState: ” + xhr.readyState); console.log(“xhr.responseText: ” + xhr.responseText); console.log(“xhr.responseXML: ” + xhr.responseXML); console.log(“textStatus: ” + textStatus); console.log(“errorThrown: ” + errorThrown); console.log(“xhr.redirect: […]

Ajax jQuery同时进行多次调用 – 漫长的等待回答而无法取消

我的问题如下: 在一个页面上,我正在做多个(6)ajax调用(通过jQuery)同时获取一些数据(使用php包装器通过调用获取数据) 请求是在同一时间完成的,需要10-20秒才能完成 如果用户点击任何链接去其他地方(到其他页面),我可以看到所有未完成的调用都被取消 但是,浏览器仍然等待20秒才能导航到另一个页面 – 就好像它仍在等待最长的呼叫完成,即使它被取消 (同样的问题在Chrome和Firefox中发生,ajax调用是异步的…我试图设置ajax超时,在ajax错误响应中捕获readystate = o,甚至尝试与webworkers做某事,但无济于事) 任何见解都会有所帮助 谢谢!

如何从ajax过滤返回数据的body html?

我的目的是,我想从数据中取出特定的html并仅更新该区域。 如何从jQuery.ajax过滤返回的数据? 这个链接是一个老post,但我确实有完全相同的问题。 从链接给出的解决方案是$(“[ref=B]”).html(data).find( ‘[ref=A]’ ); 但是,如果我这样做,整个页面将首先在上写,然后找到它内部的选择器….. 只找到'[ref = A]’的替代方法是 html = $(data).filter(‘[ref=B]’).find(‘[ref=A]’).html() // this way will work 这些都不会奏效 $(data).find(‘[ref=A]’).html(); $(data).filter(‘[ref=A]’).html(); $(data).filter(‘body’).html(); $(data).find(‘body’).html(); HTML ` abc ` JS $(function() { $.get(window.location.pathname + window.location.search, function(data){ alert(data);}); }); 返回的数据 abc 我的问题是,有没有一个解决方案来从$ .ajax返回的数据中过滤body的html? 喜欢 body_html = $(data).??????? 然后我可以做任何我想做的事,比如 body_html.find(‘xxxx’); 非常感谢你的建议。

如何获取jQuery.ajax响应状态?

有没有办法知道返回的jqXHR对象是否从另一个请求重定向? 例如,拥有以下代码: jQuery.ajax({ type: ‘POST’, url: ‘http://example.com/page.html’, complete: function(response, status) { console.log(response.statusCode); // do something } }); 如果使用301或302状态代码重定向ajax url,则响应将是重定向页面的结果,并将返回200(OK)状态代码。 我认为这是一个jQuery的错误(不知道这是否是预期的恶作剧,因为最终的响应实际上是成功的)我不能得到原始响应Headers来检查是否存在Location Header,因为这是仅适用于重定向的请求。 带有上述代码的Firebug通过XHR记录这两个请求 http://example.com/page.html 302(暂时移动) http://example.com/redirect.html 200(确定) 但是jQuery只返回第二个请求的数据。 也许有办法从第一个请求中获取数据? 或者获取响应URL并将其与原始请求中的URL进行比较?

如何使用jQuery和xhr2进行文件上传(返回空$ _FILES)

我使用$ .ajax方法和xhr2使用$ .ajax方法上传文件。 当我将任何标准对象分配给$ .ajax参数数据时,$ _POST(php)中返回一个正确的非空数组。 JS: data : {name:”john doe”} PHP:print_r($ _ POST) Array ( [name] => john doe ) 但是,当我将formData对象分配给参数数据以便上传文件时,$ _FILES(php)中返回一个空数组 JS: data : new FormData(document.getElementById(‘fileupload’)) PHP:print_r($ _ FILES) Array ( ) 我的HTML代码是: UPLOAD 我的jQuery代码是: $(‘#submit’).click(function(){ var formData = new FormData(document.getElementById(‘fileupload’)); $.ajax({ url : “upload.php”, type: “POST”, data : formData, xhr: function(){ myXhr […]

没有指定dataType的自定义ajaxTransport函数没有触发(全部!)

我一直在尝试为jQuery设置自定义ajaxTransports,以便在某些情况下为我们的产品缩短某些工作流程。 但是,我没有成功地让这些传输得到尊重(而我有许多工作定制ajaxPrefilters )。 测试了多个版本的jQuery: 1.5.2 1.6.4 1.7.2 1.8.0 使用多个浏览器进行测试: Firefox 15 Chrome 21 iOS 5网页浏览量 … 他们都没有工作。 JsFiddle测试用例: http : //jsfiddle.net/PVYut/ … 如果我添加一个dataType来缩小它,那么它工作正常。 JsFiddle测试用例: http : //jsfiddle.net/PVYut/1/ … 我只是做错了吗? 我很高兴被告知,只要我能让这个工作! -_-

当对$ .ajax的响应为301时,我可以通过编程方式获取新的URL吗?

当对xhr请求的响应是301时,有没有办法获取最终重定向到的URL? 我的网站包含来自旧版本的大量遗留url,这些url会返回301对正确新url的响应。 出于实用目的,我希望能够向旧URL发出请求,并能够检索新的URL,即发送请求到“/oldpage.aspx?foo=someParam”,获取新的URL“/ arbitaryNewPageName / someParam”。 我在firebug控制台中一直在玩这个: $.ajax({ url: “/oldpage.aspx?foo=someParam”, success: function(response, status, jqxhr){ //poking around, trying to get the new URL, “/arbitraryNewPage/someParam” console.log(jqxhr.getAllResponseHeaders()); console.log(jqxhr); }, beforeSend: function(jqxhr, settings){ console.log(jqxhr); console.log(settings); } }); 我可以在firebug中看到,当这段代码运行时,它会对“/oldpage.aspx?foo=someParam”执行一次GET,并获得301响应,然后另一个GET为“/ arbitaryNewPageName / someParam”。 对于第一个请求,我在响应标头的Location值中看到重定向的URL。 不幸的是,第二个请求是传递给$ .ajax.success函数的,它只在请求头的Referrer值中有重定向的URL。 是否有可能拦截对第一个响应的响应,或者可能会看到第二个请求的请求标头? 编辑:感谢大家的回复。 我想我需要提供一些背景来澄清我到底在寻找什么。 业务用户要求我创建一个将旧URL与新URL相关联的列表。 由于我已经实现了将旧URL重定向到服务器上的新URL的方法,因此我希望能够减少这项工作,并创建一个脚本,将请求放置到旧URL并获取请求被重定向到的URL。 像这样的东西: for (var i = 0; i < arrayOfLegacyUrls.length; i++) […]

继续中止AJAX(jqXHR)请求

是否可以继续中止AJAX(jqXHR)请求? 就像是: $(document).ajaxSend(function(event, jqXHR, ajaxOptions) { if(/* it enters my conditions */) { $.current_request = jQuery.extend(true, {}, jqXHR); jqXHR.abort(); } } // some time in the future $.ajax($.current_request) 这不起作用,我可以看到一个我不知道如何解决的问题:再次发送请求时没有设置任何选项。

通过ajax执行发布时,返回错误请求而不是JSON结果

使用Javascript jqXHR = $.ajax({ url: $frm.attr(“action”), type: “POST”, dataType: “json”, cache: false, headers: headers, contentType: “application/json;charset=UTF-8”, data: ko.mapping.toJSON(data, map), beforeSend: function(x) { if (x && x.overrideMimeType) { return x.overrideMimeType(“application/json;charset=UTF-8”); } } }); jqXHR.fail(function(xhr, err, msg) { /* xhr.responseText NEED TO BE JSON!!! */ }); 在Chrome中 头 Request Method:POST Status Code:400 Bad Request Request Headersview source […]