Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ajax调用运行之前为变量赋值_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在ajax调用运行之前为变量赋值

Javascript 在ajax调用运行之前为变量赋值,javascript,jquery,ajax,Javascript,Jquery,Ajax,在ajax调用中传递的变量有问题。ajax调用使用变量的默认值,可能是因为它是异步运行的 jQuery $(“添加配偶”)。在(“单击”,函数(){ var配偶_id=[]; var last_id=0; var partnerse_wrapper=$(“#partnerse_wrapper”); 如果($(“.party_info”).长度){ $(“.party_info”)。每个(函数(){ 配偶id.push($(this.data(“id”)); }); last_id=Math.ma

在ajax调用中传递的变量有问题。ajax调用使用变量的默认值,可能是因为它是异步运行的

jQuery
$(“添加配偶”)。在(“单击”,函数(){
var配偶_id=[];
var last_id=0;
var partnerse_wrapper=$(“#partnerse_wrapper”);
如果($(“.party_info”).长度){
$(“.party_info”)。每个(函数(){
配偶id.push($(this.data(“id”));
});
last_id=Math.max.apply(数学,配偶_id);
}
$.ajax({
url:“/employments/create”,
方法:“GET”,
数据:{
id:最后一个id
},
成功:函数($result){
配偶包装器。附加($result);
}
});
console.log(最后一个id);
});
ajax调用中始终传递的
id
0
。我通过控制台记录日志,得到递增值
0
1
2
,等等,但是当我检查ajax调用中传递的参数时,它总是
0
。在ajax调用运行之前,我如何传递
id
的值

请参阅下面的屏幕截图

这是控制台日志:

这是ajax调用接收的查询字符串参数





如您所见,在控制台日志上,该值从0增加到1。但是在查询字符串参数上(请参见图像左侧),第一个被传递的参数是0,第二个参数仍然是0。

您的
。配偶信息
元素似乎从未更新过

Ajax调用将项目附加到
配偶包装器
,该包装器不用于查询其子项

我没有看到直接的缺陷,除了数组从不大于0这一事实

编辑:因为我不知道到底是什么原因造成的,让我们把一些事情分开:

$(".add-spouse").on("click", function(){
    var spouse_ids = [];
    var last_id = 0;
    var spouse_wrapper = $('#spouse_wrapper');

    if($(".spouse_info").length){
        $(".spouse_info").each(function(){
            spouse_ids.push($(this).data("id"));
        });

        last_id = Math.max.apply(Math, spouse_ids);
    }

    const ajaxData = {
        url: '/spouses/create',
        method: 'GET',
        data: {
            id: last_id
        },
        success: function($result){
            spouse_wrapper.append($result);
        }
    };
    console.log(ajaxData);
    $.ajax(ajaxData);

    console.log(last_id);

});

请与进行检查,以确保以下情况并非如此:“要发送到服务器的数据。如果尚未转换为字符串,则会将其转换为查询字符串。它会附加到用于获取请求的url中。”是否确定wrapper.length不是0,则显示的网络选项卡屏幕截图正在调用
创建
,不
new
@AhmedSunny最初为0。但是ajax调用会附加新的内容,因此每次单击的次数应该增加1。@EricLease这是一个输入错误。这是创造。我已经对它进行了更新以避免混淆。每当我点击点击事件时,数组就会变大,这就是为什么在控制台日志中,值会增加;从0变为1。问题是,每次我点击click事件时,ajax调用总是收到0。顺便说一下,插入到party_包装上的元素是party_info元素。因此,最初没有配偶信息元素。如果我点击点击事件,它会插入一个配偶信息元素。根据点击次数的不同,配偶包装中可能有许多配偶信息元素。你可以添加一些额外的控制台日志记录。我已经更新了我的答案。这看起来是我的一个小错误。这是我最后一个没有分配递增值的_id。它应该是:last_id=Math.max.apply(Math,party_id)+1;