2013-11-04 54 views
0

看來我有一個jQuery ajax表單的問題,它始終發送相同的值,儘管表單字段顯示爲空。因此,我認爲jQuery是「緩存」或不覆蓋我定義的變量。jQuery ajax對話不斷髮送相同的值

function payment(projectID, billID) 
{ 
    $.ajax 
    ({ 
     url: 'modules/projects/projectFinancial.php?action=paymentDetails&projectID=' + projectID + '&billID=' + billID + '&rand=' + Math.random(), 
     dataType: 'html', 
     async: false, 
     success: function(msg) 
     { 
      $("#paymentDetails").html(msg); 
     } 
    }); 

    $("#payment").dialog(
    { 
     width: 500, 
     height: 300, 
     modal: true, 
     buttons: 
     { 
      Save: function() 
      { 
       var paymentAmount = $("#PaymentAmount").val(); 
       var paymentMethod = $("#PaymentMethod").val(); 
       var paymentRemarks = $("#PaymentRemarks").val(); 

       if ($('#PaymentDone').is(':checked')) 
       { 
        var paymentDone = 1; 
       } 
       else 
       { 
        var paymentDone = 0; 
       } 

       $.ajax 
       ({ 
        url: 'modules/projects/projectFinancial.php?action=payment&projectID=' + projectID + '&billID=' + billID + '&paymentAmount=' + paymentAmount + '&paymentMethod=' + paymentMethod + '&paymentRemarks=' + paymentRemarks + '&paymentDone=' + paymentDone + '&rand=' + Math.random(), 
        dataType: 'html', 
        async: false, 
        success: function(msg) 
        { 
         if (msg != "error") 
         { 
          showFinancial(msg, '{/literal}{$marginCalculated}{literal}'); 
         } 
        } 
       }); 

       $(this).dialog("close"); 
      } 
     } 
    }); 
} 

回答

0

嘗試使用下面的代碼完全關閉緩存。此外,您應該使用POST方法來改變服務器上的某些操作(付款似乎是這樣的操作)。

$(function() { 
    $.ajaxSetup({ cache: false }); 
}); 

另一種思考:確保在單擊保存第二次,#PaymentAmount是指輸入字段中對話框。在動態加載的內容中使用ID是有風險的,因爲如果您多次加載相同的東西,您可以輕鬆地結束重複的ID。

$(this).dialog("close")實際上並沒有從DOM中刪除舊對話框。
請嘗試使用$(this).dialog("destroy")代替。

+1

糟糕,看起來op已經實現了手動。請參閱URL末尾的''&rand ='+ Math.random()'。 –

+0

在函數的開頭聲明變量,稍後更改其值而不聲明(var paymentDone = 0;在if/else中)。如果您登錄/註銷#PaymentDone,您可能會重新聲明您的變量 – pszaba

+0

那麼。我試過緩存:錯誤的建議,這似乎沒有任何效果。我也改變了對話框接近摧毀,這種改變是,當重新打開對話框時,它實際上顯示了我前一次輸入的值,這與dialog.close無關。 我也嘗試將所有值設置爲'',這確實清空輸入字段,但是當提交它時提交空變量,而我按下保存按鈕時獲取值。 – Peter