Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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数据$key和$value_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 如何使用变量设置ajax数据$key和$value

Javascript 如何使用变量设置ajax数据$key和$value,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在尝试为搜索查询动态创建ajax数据$key和$value。我有三个下拉菜单,当其中一个菜单发生变化时,我希望循环遍历每一个菜单来获取它们的值,并为我的ajax数据创建$key+$value 到目前为止,我已经: $(document).on("change", ('select'), function(e){ $('select').each(function(i, val){ value = $(this).val(); param_name

我正在尝试为搜索查询动态创建ajax数据$key和$value。我有三个下拉菜单,当其中一个菜单发生变化时,我希望循环遍历每一个菜单来获取它们的值,并为我的ajax数据创建$key+$value

到目前为止,我已经:

$(document).on("change", ('select'), function(e){ 

    $('select').each(function(i, val){
        value = $(this).val();
        param_name = $(this).attr("name");
        var query = { };
        query['' + param_name + ''] = value;
        console.log(query);
    });

    search(query);
}); 
但这当然会创建3个不同的查询,而不是一个组合查询


或者,有没有一种方法可以在过滤器更改后简单地添加/更新搜索查询,而不是每次都循环搜索其中的每一个查询

您需要在循环外部声明
查询
对象,以便每个事件只有一个对象

$(document).on("change", ('select'), function(e){ 
    var query = { };
    $('select').each(function(i, val){
        value = $(this).val();
        param_name = $(this).attr("name");      
        query[ param_name] = value;
        console.log(query);
    });

    search(query);
});
较短版本:

$(document).on("change", ('select'), function(e){ 
    var query = { };
    $('select').each(function(i, val){                 
        query[ this.name] = this.value;            
    });

    search(query);
});

您需要在循环外部声明
查询
对象,以便每个事件只有一个对象

$(document).on("change", ('select'), function(e){ 
    var query = { };
    $('select').each(function(i, val){
        value = $(this).val();
        param_name = $(this).attr("name");      
        query[ param_name] = value;
        console.log(query);
    });

    search(query);
});
较短版本:

$(document).on("change", ('select'), function(e){ 
    var query = { };
    $('select').each(function(i, val){                 
        query[ this.name] = this.value;            
    });

    search(query);
});

或者,他可以省略var关键字并保留它inside@Cruiser这将在每次迭代中覆盖对象,在全局中设置是不好的做法namespace@Cruiser这就把它变成了一个全局变量,如果一个人决定在其他地方重用这个变量,可能会导致副作用。我不是说这是一个可以接受的做法,只是它也会解决问题。@Cruiser怎么办?对象每次都会被覆盖,并且只能得到上一个
中的一个属性,他可以省略var关键字并保留它inside@Cruiser这将在每次迭代中覆盖对象,在全局中设置是不好的做法namespace@Cruiser这就把它变成了一个全局变量,如果一个人决定在其他地方重用这个变量,可能会导致副作用。我不是说这是一个可以接受的做法,只是它也会解决问题。@Cruiser怎么办?对象每次都会被覆盖,最后只会得到上一个