2010-09-25 16 views
1

送我試圖發送一些數據在Ajax調用服務器更新記錄通過查詢字符串中的AJAX調用

var OrderNotes = $.ajax({ 
       url:'AjaxActions/OrderNotesUpdate.aspx?OrderID=' + OrderID + '&Notes=' + $('#txtNotes').val(), 
       async:false     
       }).responseText; 

「註釋」是Unicode時失去的Unicode字符。

當我檢查接收頁面上的查詢字符串時,我得不到相同的代碼(不是我輸入的文本)。

任何人都知道這件事嗎?是因爲數據來自asp.net文本框? 我能做些什麼呢?發送前

PS我檢查和每一個事情是理所應當,只是在查詢字符串的每一件事去錯了... 10X

+0

有一個很好的理由使用'async:false',它會在請求期間鎖定客戶端瀏覽器。使用同步AJAX的最常見原因是缺乏對如何實現回調的理解。 – Matt 2010-09-25 10:15:18

回答

6
jQuery.ajax({ 
      url:'AjaxActions/OrderNotesUpdate.aspx', 
      data:{ 
       OrderID:OrderID, 
       Notes:$('#txtNotes').val() 
       }, 
      async:false, 
      type:'get', 
      success:function(data) 
        { 
        //do something here 
        } 
}) 
+0

10倍,多數民衆贊成在.... :-)我不能接受6分鐘的答案....所以我會等待,但10倍 – Erez 2010-09-25 08:56:22

4

首先普利文普拉薩德的所有答案,我覺得正確的。我只想添加一些關於「爲什麼...?」這個問題將會回答的描述。而不是「如何...?」。

如果你每HTTP GET發送到服務器的參數有一些特殊的字符,那就不會在URL中使用不編碼,所以你必須使用至少

url:'AjaxActions/OrderNotesUpdate.aspx?OrderID=' + 
    encodeURIComponent(OrderID) + '&Notes=' + encodeURIComponent($('#txtNotes').val()) 

下一步:您可以使用jQuery.param()相對於的encodeURIComponent地點 '&' 字符paramters之間編碼URL參數:

$.ajax({ 
    url:'AjaxActions/OrderNotesUpdate.aspx?' + 
     $.param({OrderID: OrderID, Notes: $('#txtNotes').val()}), 
    async:false}) 

$.ajax({ 
    url:'AjaxActions/OrderNotesUpdate.aspx' + 
    data: { OrderID: OrderID, Notes: $('#txtNotes').val()}, 
    async:false}) 

哪個地方'?' urldata之間編碼$.param如果url不包含'?'否則使用'&'代替。

下一步:只要有可能,您應該嘗試使用$.ajax的異步版本。人們需要查看更多的代碼來幫助你。一般來說,它應該是

$.ajax({ 
    url:'AjaxActions/OrderNotesUpdate.aspx' + 
    data: { OrderID: OrderID, Notes: $('#txtNotes').val()}, 
    success:function(response) { 
     /* here use can use response.responseText. For examlpe you can 
      code which call the syncrone $.ajax before and used 
      the return value here */ 
    } 
}) 
+0

10倍,最後的答案是偉大的我的需求,但10倍,它非常有幫助。併爲同步ajax,我需要完成ajax調用,因爲我不希望reciving頁面丟失任何數據,我使用ajax調用的結果,並且我明白,每次ajax不只是發送數據到服務器,但你使用這些數據一些如何,你需要使用async:false參數.... – Erez 2010-09-27 09:57:11

+0

@Erez:從你的問題是不清楚你從服務器獲得哪種數據。如果數據('OrderNotes')是一個html片段(並且你有''div id =「myAjaxResult」/>''那麼你可以使用'$(「#myAjaxResult」)。html(response)。 responseText)'在'success'句柄的主體中。以同樣的方式,您可以使用來自服務器響應的JSON數據填充。因此,從100%的95%,你可以很容易地編寫你的程序,而不需要'async:false'。它需要阻止你的頁面或頁面片段我建議你jQuery BlockUI插件:http://jquery.malsup.com/block/#demos – Oleg 2010-09-27 10:17:37