JQuery-GET,如何制造火并忘记

JQuery-GET,如何制造火并忘记,jquery,ajax,get,Jquery,Ajax,Get,我有一个搜索结果页面,在页面准备就绪时,我有一个ajax GET来预请求每个结果项url,以便预缓存这些页面 例如 撇开这种方法是否正确的争论不谈,我如何在jQuery中发出一个请求页面的ajax GET请求,等待状态代码更改,然后中止请求(换句话说,不需要接收内容) 我遇到过,但我不知道如何将其合并到jQuery GET函数中。如果您希望在发送AJAX调用后立即中止它。您可能可以使用abort()函数。你可能会发现还有其他有用的方法 var ajaxCall = $.ajax({ ty

我有一个搜索结果页面,在页面准备就绪时,我有一个ajax GET来预请求每个结果项url,以便预缓存这些页面

例如

撇开这种方法是否正确的争论不谈,我如何在jQuery中发出一个请求页面的ajax GET请求,等待状态代码更改,然后中止请求(换句话说,不需要接收内容)


我遇到过,但我不知道如何将其合并到jQuery GET函数中。

如果您希望在发送AJAX调用后立即中止它。您可能可以使用
abort()
函数。你可能会发现还有其他有用的方法

var ajaxCall = $.ajax({
    type: "GET",
    url: "server.php",
    data: "name=James&location=Auckland",
    success: function(response){
       alert( "Response: " + response );
    }
});

//abort the request
ajaxCall.abort();
如果您只想发出AJAX请求并处理状态代码更改,那么这段代码可能会很有用

$.ajax({
  statusCode: {
    200: function() {
      alert("request successful");
    }
  }
});
当设置了
200
状态代码(一个完整的请求)时,将触发此回调。您可以将此代码更改为要检测的任何状态代码。在该回调中,您可以调用
abort()
函数

我要做的是:

var $page = $('<div>').load('/somepage body', function() {
    // code to do something when its loaded
});
var$page=$('').load('/somepage-body',function(){
//加载时执行某些操作的代码
});
如果不放置选择器,它将在中激发脚本。您也可以这样做,但必须相应地编写脚本

但要回答您的具体问题:

var pages = [];

function allLoaded() {
   console.log('all pages loaded');
}

$('.link').each(function(){
    var $page = $('<div>'), href = $(this).attr('href');
    $page.load(href + ' body', function() {
       pages.push({href: href, html : $page.html()});
       if (pages.length === $('.link').length) {
          allLoaded();
       }
    }
});
var页面=[];
函数allLoaded(){
console.log(“加载的所有页面”);
}
$('.link')。每个(函数(){
var$page=$(''),href=$(this.attr('href');
$page.load(href+'body',function(){
push({href:href,html:$page.html()});
如果(pages.length==$('.link').length){
全部加载();
}
}
});

难道你不喜欢闭包吗?

也许你正在寻找一个同步的AJAX调用。你的脚本会等到请求完成后才继续运行。然后你可以检查

异步的 默认情况下,所有请求都是异步发送的(即默认情况下设置为true)。如果需要同步请求,请将此选项设置为false


如果这个问题的最终目标是发出请求,获取url的状态,但不下载内容,那么最好的办法不是覆盖AJAX get HTTP方法,而是使用HEAD HTTP方法

堆栈溢出:

JQuery文档(查看“type”属性):


如果您在收到内容之前取消请求,浏览器如何预缓存?缓存清单?不,我希望服务器预缓存页面。当状态代码更改处理程序函数启动时,请求的内容是否会加载?我不是100%确定。如果您只是将AJAX对象打印到控制台,您就可以看到这一点。嗯,t我给出的例子是一个
200OK
响应。您可以将其更改为您想要的任何状态代码。。。
var pages = [];

function allLoaded() {
   console.log('all pages loaded');
}

$('.link').each(function(){
    var $page = $('<div>'), href = $(this).attr('href');
    $page.load(href + ' body', function() {
       pages.push({href: href, html : $page.html()});
       if (pages.length === $('.link').length) {
          allLoaded();
       }
    }
});
var ajaxCall = $.ajax({
    type: "GET",
    async:false,
    url: "server.php",
    data: "name=James&location=Auckland",
});
if (ajaxCall.status == 200){
  // request executed successfully 
}