2012-07-22 134 views
1

我正在使用ajax函数,其中我传递一个隐藏的字段值,并根据该值传递到下一个文件和查询运行重新调整值(html),我更新后来到那个隐藏的领域,但问题是当我使用隐藏字段的更新值通过一个变量传递它dosent采取新的值更新,而不是它需要隐藏字段的旧值?谁能帮我这个ajax请求后隐藏字段的值

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

任何解决方案的朋友?真的需要帮助这个 – 2012-07-22 11:10:35

回答

2

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

确保在接收到对Ajax调用的响应之后运行一段代码的唯一方法就是将它放入“成功”函数中。

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

+0

但我的代码的其余部分不检测$目标,如果我把$目标='';在'成功'功能里面。任何替代方案? – 2012-07-22 10:40:14

+0

我假设你需要使用$ target的代码的其余部分也必须在从服务器收到响应之后才运行?在这种情况下,您需要将所有代码放在'成功'中 - 如果有很多代码,请将其放入一个命名函数中。 – codebox 2012-07-22 10:46:32

+0

是的,它有很多的代码,也像api一样。我用它来做更多的事情。上帝知道m被卡在了这个问题上,我无法在代码中找到一个东西 – 2012-07-22 10:50:13