Javascript 选择未识别并传递给ajax的值更改

Javascript 选择未识别并传递给ajax的值更改,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我的代码设置如下: 首先选择: <select id="select_order"> <option value="0">Pick One</option> <option value="1">Ascending</option> <option value="2">Descending</option> </select> 我希望做的是从下拉列表中选择值,然后将

我的代码设置如下:

首先选择:

 <select id="select_order">
     <option value="0">Pick One</option>
     <option value="1">Ascending</option>
     <option value="2">Descending</option>
  </select>
我希望做的是从下拉列表中选择值,然后将这些新变量(对于sortv和sorto)传递到ajax中。AJAX从我的PHP文件中获取JSON,该文件用于绘制Flot图表

我在if…else代码上面设置了sortv和sorto的变量,这样AJAX就有了一些变量来首先加载图表(这样它就不会抛出错误)。但是,当我选择与选择不同的内容时,我会收到与我的ELSE条件对应的警报。我不知道为什么

假设我(即您)可以解决这个问题,那么这是在AJAX中传递新数据变量的正确方法吗?如果代码是我的.done语句(未显示),那么当这些变量发生变化时,我是否应该期望图表重新绘制

如果您有任何想法,我们将不胜感激。

请使用.val()而不是.val来接收该值。val()是一个可以获取或设置字段值的函数

此外,您还应该在eventhandler函数中使用$(this),因为在代码中,事件由您的select字段调用,因此您不需要按id重新选择它:

$("#select_order").change(function(){
    var call = true;
    switch(parseInt($(this).val())) {
        case 1:
            sortv = "database_percent";
            sorto = "asc";
        break;
        case 2:
            sortv = "database_percent";
            sorto = "desc";
        break;
        default:
            call = false;
            alert("Pick something");
        break;
    }

    if(call) {
        $.ajax({
            url: 'all_get_2.php?category=ethnicity',
            type: 'GET',
            dataType: 'JSON',
            data: {sortvalue: sortv ,sortorder:sorto},
            success: function(data) {
                // your response handler here
            }
        });
    }
});
是函数而不是属性

因此,您需要使用:

$("#select_order").val()

此外,选择器前面缺少
$
。您可以在处理程序中使用
这个.value

明白了。这就成功了。现在的问题是如何将新变量传递到ajax中…本质上是“重新加载”ajax…有没有办法做到这一点?我不想将更改事件全部包装起来,因为我希望图表在有人从选择中选择之前呈现,然后在他们选择时更新。明白了。这就成功了。现在的问题是如何将新变量传递到ajax中…本质上是“重新加载”ajax…有没有办法做到这一点?我不想将更改事件全部包装起来,因为我希望在有人从select中选择之前呈现图表,然后在他们选择时进行更新。在更改事件处理程序中直接使用ajax调用如何?实际上,您编辑的代码每次都会给我“选择一些东西”。如果我将ajax调用放在事件处理程序中,我是否也必须移动.done?parseInt的添加完成了这个技巧,效果非常好。将我的“完成”移到ajax中,选择的工作非常好。我现在唯一的问题是,如何在有人选择某个内容之前加载图表(即在页面加载),然后在有人选择时进行更改代码中的某个处理程序。如果您调用该页面,将执行该命令。
$("#select_order").val()