2010-09-25 69 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