Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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 Jquery从选择框中获取值并进行AJAX调用_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript Jquery从选择框中获取值并进行AJAX调用

Javascript Jquery从选择框中获取值并进行AJAX调用,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有多个选择框,我想从中获取每个选择选项的值,并根据选择的选项进行AJAX调用。我怎样才能做到这一点 到目前为止,我有: $('select[name="restaurant_chosen"]').on('change', function() { var restaurant_id = $(this).val(); }); $('select[name="date_chosen"]').on('change', function() { var date_chosen = $

我有多个选择框,我想从中获取每个选择选项的值,并根据选择的选项进行AJAX调用。我怎样才能做到这一点

到目前为止,我有:

$('select[name="restaurant_chosen"]').on('change', function() {
    var restaurant_id = $(this).val();
});

$('select[name="date_chosen"]').on('change', function() {
    var date_chosen = $(this).val();
});

$.ajax({
   type: 'GET',
   url: '/api/' + restaurant_id + '/' + date_chosen +
   success: function(data) {
     console.log(data)
   }, 
   error: function(data){
    console.log('error')
  }
 });

选择的两个变量
restaurant\u id
date\u
我得到了未定义的错误
。我做错了什么?

应该是这样的。您正在私有函数上下文中声明变量,您不能(也不能)从外部访问该上下文

简单的解决方案是,将两个变量的声明移出
onchange
事件处理程序(使其更全局)

函数sendToServer(值、onSuccess、onError){
var餐厅标识,选择日期;
//在这里,使用值填写所选的餐厅id和日期
$.ajax({
键入:“GET”,
url:'/api/'+餐厅id+'/'+选择的日期,//用逗号替换加号
成功:功能(数据){
onSuccess(数据);
}, 
错误:函数(数据){
onSuccess(数据);
}
});
}
$('select')。在('change',function()上{
var值=[];
$('select')。每个(函数(索引){
v=$(this.val();
n=$(this.attr(“name”);
push({“name”:n,“value”:v});
});
日志(“值:”,值);
sendToServer(值,
功能(数据){
控制台日志(数据);
}, 
功能(数据){
console.log('错误',数据);
}
);
});

沃尔沃汽车
奥迪
红色
蓝色

这是一个非常基本的oops,称为变量访问范围。您已经在change函数中声明了变量,并在ajax调用中绑定到access。让它们全球化使用。
var restaurant_id;
    date_chosen;

$('select[name="date_chosen"]').on('change', function() {
   date_chosen = $(this).val(); // skip the var here
});