[英]How can i stop ajax request (don't wait untill response come)?
如果我使用Ajax發送請求,這個請求需要很長時間.....如果我想發送另一個請求,我該怎么辦?
當前行為第二個請求(我做)等到第一個請求得到響應。
注意:我想在整個應用程序上執行此行為(任何新請求立即執行而不是等待舊的首先完成)我的應用程序使用(Ajax + PHP + jQuery + Symfony)
假設這是第一個請求需要很長時間:
$.ajax
({
type: "GET",
url: url1,
success: function (html)
{
// do some thing
}
});
在任何時候我都希望這個請求執行並終止第一個請求。
$.ajax
({
type: "POST",
url: url,
success: function (html)
{
// do some thing else
}
});
var xhrReq;
xhrReq = $.ajax(...);
// then if you want to stop the rqest and exit use :
xhrReq.abort();
這是一種手動過程,但您可以添加全局xhr對象並在每個請求上對其進行測試。 如果readystate是“正在加載”,則中止它:
var xhr;
var loadUrl = function(url) {
if ( xhr && xhr.readyState > 0 && xhr.readyState < 4 ) {
// there is a request in the pipe, abort
xhr.abort();
}
xhr = $.get(url, function() {
console.log('success', this);
});
};
loadUrl('/ajax/');
XMLHttpRequest對象具有中止功能。 您可以使用setTimeout中止占用時間過長的請求。
編輯:如果您不想使用計時器,並且發生應該中止先前請求的新事件,那么事件處理程序應該執行以下操作
if(!this.request) return; // request contains the XMLHttpRequest
this.request.onreadystatechange = function() {};
if(this.request.readyState != 4) {
this.request.abort();
}
然后,您可以創建新的XMLHttpRequest對象。
我一直致力於這方面的工作,我覺得我找到了一個有效的解決方案。 我有一個緩存過程導致頁面掛起,直到完成(平均5秒)。 是的,這更適合作為CRON工作,但我需要為用戶創建緩存過程,而不需要知道他們用於CMS的環境。 我做了什么:在變量中創建調用,然后通過硬刪除刪除它。 通過刪除它似乎正在刪除等待。 這種“黑客”似乎將等待從5秒平均拉到325毫秒等待。
var ignore = $.ajax({
url:something/here.php,
type: "GET",
url: url1,
success: function(){}
});
delete ignore;
定義ajax請求變量:
var xhr;
進行ajax調用:
xhr = $.ajax(...);
中止ajax調用:
xhr.abort();
瀏覽器允許您每次只處理對同一主機的有限數量的請求(我記得2或3,具體取決於瀏覽器)。
請求計數的解決方法是制作虛假域名 - 例如img1.domain.com,img2.domain.com等,導致同一主機並在請求中隨機使用它們。 然后你可以提出你需要的請求。 應根據請求數量選擇域計數以保持邊界 - 每個域2個請求。 否則,第三個請求將等待,直到其中一個活動完成。
它允許您接收來自所有請求的回復。 例如,Google使用它來加快圖片加載速度。
編輯:
示例:您有http://yourhost.com/和別名http://alias.yourhost.com ,它們指向同一個地方。 然后:
$.ajax
({
type: "GET",
url: 'http://yourhost.com/somescript.php',
success: function (html)
{
// do some thing
}
});
接着
$.ajax
({
type: "POST",
url: 'http://alias.yourhost.com/somescript2.php',
success: function (html)
{
// do some thing else
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.