ajax调用后选择值不会改变

时间:2011-08-29 12:04:14

标签: javascript jquery ajax

我编写了一段代码,用于通过ajax调用生成的值生成图表。

问题是,select(years)在调用加载后没有改变它的值。奇怪的是,我可以看到它的价值在变化(如果我提醒其当前值),但它根本不会改变。

代码:

http://pastebin.com/RNfLmdWy

$ .load_x函数是一个自定义加载器,但它的行为与普通的$ .getJson调用相同。

2 个答案:

答案 0 :(得分:1)

发现它!这部分负责:

var option = $(this).attr('id').split('option_');
$('#'+option[1]).val(String($cur_val));
setTimeout(function(){$('#'+option[1]).val(String($cur_val))}, 1000);

我不知道你在这里尝试做什么,但基本上,选项变量变为数组[“”,“年”],并且在下一步中你设置$(“#”+选项[ 1])$ ​​cur_val变量的值,这是在#option_years输入中找到的任何内容。

Soooo把它包起来。要摆脱“我的选择不改变它的价值”问题,在这种情况下只需摆脱那些线或者至少让我知道你想在那里做什么:)

编辑:以下是适用于我的示例:http://pastebin.com/sFRT3GJa(在FF和Chrome上测试过)。正如你所看到的那样,我使用的是jQuery 1.6.1,jQuery UI 1.8.16和jqPlot 1.0.0b2_r792。除此之外,我已经移动了$ .load_x的回调函数,并将其命名为 handleJSON 。然后我传递了你在问题中粘贴的JSON数据来模拟$ .load_x函数的成功响应。

答案 1 :(得分:0)

在拨打get_port_graph电话之前,请先给选择框留出一些时间来更改自拨打电话以来的下拉菜单。它会起作用。

function year_chart(year)
{
    settTimeout(function(){
        var d = new Date();
        get_port_graph("Uitporteringen "+year,d.getMonth(), year,'outport', 'chart1', 'bar');   
    }, 100);       

}