我正在使用ajax函数,其中我传递一个隐藏的字段值,并根据该值传递给下一个文件,并且查询运行重新调整值(html),我稍后更新到该隐藏字段但是问题是,当我使用隐藏字段的更新值来传递一个变量时,它会更新新值,而是采用隐藏字段的旧值?任何人都可以帮助我
var pre_prod_id = $('.prod_id').val(); //old hidden field value
$.ajax({
type: "GET",
url: "eg",
cache: false,
success: function(html) {
$('.prod_id').val(html); // got updated value via ajax and updated
}
});
var prod_id = $('.prod_id').val(); // getting new value of hidden field
alert(prod_id); // alert gives still the old value ???
$target = 'egab=' + abd + '&& abc=' + abc + '&& action=' + action + '&& prod_id=' + prod_id;
我已经在步骤中提到了我想要做什么?希望有人找到解决方案。
答案 0 :(得分:2)
对$ .ajax的调用是异步的,因此在执行第二个var prod_id = $('.prod_id').val();
语句之前,您的代码不会等到从服务器收到响应。
确保在收到Ajax调用响应之后运行一段代码的唯一方法是将它放在“success”函数中。
另一种方法(但不是我建议的方法)是通过设置async : false使ajax调用同步。这是不好的做法,因为它可以使浏览器无响应 - 我建议重构代码,如上所述。