gpt4 book ai didi

javascript - ajax请求中变量丢失

转载 作者:行者123 更新时间:2023-11-30 08:25:28 26 4
gpt4 key购买 nike

当我尝试将变量作为参数传递给嵌套的 ajax 请求回调时,我遇到了奇怪的行为:

$('form').on('submit',function(e){
$.ajaxSetup({
header:$('meta[name="_token"]').attr('content')
})
e.preventDefault(e);
$.ajax({
type:"POST",
url:dest_url,
data:$(this).serialize(),
dataType: 'json',
success: function(data){
if($.isEmptyObject(data.error)){
// performing some actions
// at this point, data.id contains my id

// We call an other function,
// which performs an other ajax request,
// with data.id as parameter

listRefresh(data.id);

}else{
// error message
}
},
error: function(data){
// error message
}
})
});


function listRefresh(id){
console.log(id); // At this point, id contains my id
$.ajaxSetup({
header:$('meta[name="_token"]').attr('content')
})
var src_url = location.href + '?id='+id;
$.ajax({
url: location.href,
type: 'GET',
cache: false
})
.done(function(id) {
console.log(id);

// At this point the console outputs
// all my html code in place of id

// I tried to pass data, response, id, but still the same issue
})
.fail(function() {
//error message
});
}

正如上面代码注释中所说,在listRefresh ajax完成回调中,我的变量似乎消失了,console.log在控制台中输出了我的整个html代码...我从来没有见过这样的事情。您能解释一下原因吗?我如何将我的 id 作为参数传递给 ajax 回调?

最佳答案

传递给 done 中函数的第一个参数是来自 AJAX 请求的响应。无论您如何调用变量,这都是将传递给该函数的内容。

您可以捕获闭包中的值,只需给它另一个名称并将其分配给局部变量即可。像这样的事情:

done(function(response) {
var theId = id;

// "response" contains the response from the server.
// "theId" contains the value of `id` from outside this function.
})

关于javascript - ajax请求中变量丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46301759/

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