2013-02-22 125 views
0

我在jquery中有以下代碼,它應該在提交表單時更新隱藏字段,並使用新值處理表單。提交表單後ajaxForm更改值

$("#" + id).ajaxForm({ 
    beforeSubmit: function() { 
     $("#" + id + " input[type=submit]").attr('disabled', true); 
     $("#" + id + " img.loader").show(); 

     $.get('/getProd.php?refNumber='+$("#" + id + " input[name='refNumber']").val(), function (data) { 
      $("#" + id + " input[name='productID']").val(data); 
     }); 
     alert("done pre"); 
    }, 
    success: function(resp) { 
     $("#" + id + " input[type=submit]").attr('disabled', false); 
     $("#" + id + " img.loader").hide(); 
     resp = eval('(' + resp + ')'); 
     ccm_parseJSON(resp, function() { 
      alert('done'); 
     }); 
    } 
}); 

我的問題是,正在使用的提交的值是舊的。我如何使成功使用我插入的新值

$("#" + id + " input[name='productID']").val(data); 

謝謝。

+0

問題:根據我所讀的內容,您不需要'productID'來識別產品,您只需要'refNumber'。你爲什麼不改變你的服務器端處理來考慮'refNumber',而不是'productID'? – LeGEC 2013-02-22 12:59:12

+0

我需要productId,頁面getProd.php將refNumber轉換爲我的productId。它需要運行服務器端 – Meir 2013-02-22 13:05:06

+0

我管理,看看我的答案 – Meir 2013-02-22 13:07:20

回答

0

我發現問題在於ajax使用異步(它應該)。

它基本上是完成功能完成後,查詢服務器。

所以,我在我的AJAX調用

$.ajaxSetup({ 
     async: false 
    }); 

之前,我的Ajax調用

$.ajaxSetup({ 
     async: true 
    }); 

後置和它的工作就好了。

0

(以下注釋)

這就是我的意思是:你爲什麼不

  1. 表單內容發送到服務器,用正確的refNumber
  2. 在服務器端
  3. ,通話getProd.php(或其中編碼的任何函數)得到正確的productID,
  4. 繼續正確的productID

它會從客戶端節省一個額外的返回&。

+0

這不會工作,因爲我不能修改使用productId使用refNumber的腳本。我基本上把它發送到兩個不同的地點。我解決了我的問題,看看上面。 謝謝! – Meir 2013-02-22 13:11:43

+0

你有額外的限制。好 – LeGEC 2013-02-22 13:12:38