1

我正在使用一个 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;

我已经在步骤中提到了我想要做什么?希望有人找到解决方案。

4

1 回答 1

2

对 $.ajax 的调用是异步的,因此您的代码不会等到从服务器收到响应后才执行第二条var prod_id = $('.prod_id').val();语句。

确保一段代码在收到 Ajax 调用的响应之后而不是之前运行的唯一方法是将其放在“成功”函数中。

另一种方法(但不是我推荐的方法)是通过设置async 使 ajax 调用同步: false。然而,这是不好的做法,因为它会使浏览器无响应 - 我建议如上所述重构代码。

于 2012-07-22T10:30:18.217 回答