jQuery:如何在select事件上刷新javascript值?

时间:2011-12-01 12:06:09

标签: javascript jquery

我有这样的代码:

var regions = [{'label': 'array', 'value': '1'}];   //default values

$("#auto1").select({
    regions = jQuery.parseJSON(     //updating process
        $.ajax({
            type: 'POST',
            url: '/ajax/place/',
            data: { country: value }
        })
    );
    return false;
});

$("#auto2").some_func({
    initialValues: regions,     //here must be updated values, but it's not
});

我认为从上面的代码可以理解:当页面加载时,元素#auto2有默认值,但是当我从#auto1中选择smth时它必须更新,但它不是。

如何更新与数据值对应的值。

谢谢!

2 个答案:

答案 0 :(得分:3)

$("#auto1").select({
    regions = jQuery.parseJSON(     //updating process
        $.ajax({
            type: 'POST',
            url: '/ajax/place/',
            data: { country: value },
            success: function( data ) {
               //trying yo update values, after successfull response
               //some cool code is here or calling a function to update values
            },
            error: function( data ) {
               //error to update
            }
         }
        })
    );
    return false;
}); 

答案 1 :(得分:0)

您的问题在于如何尝试恢复您的ajax数据。 ajax调用是asyncrynous,这意味着他们不会在返回之前保留代码。因此,jQuery.ajax允许您根据ajax响应是否返回成功或失败代码来触发成功和失败回调。您需要在成功回调中解析数据并将其存储在some_func方法可以看到它的范围内的变量中

var regions = [{'label': 'array', 'value': '1'}];   //default values

$("#auto1").select({
        $.ajax({
            type: 'POST',
            url: '/ajax/place/',
            data: { country: value },
            success: function(data){
              regions = jQuery.parseJSON(data);
            }
        });
    return false;
});

$("#auto2").some_func({
    initialValues: regions 
});