在AJAX调用中通过查询字符串发送时丢失unicode Char

时间:2010-09-25 08:46:57

标签: javascript asp.net ajax jquery

我正在尝试在Ajax调用中发送一些数据来更新服务器中的记录

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

“注意”是unicode。

当我在接收页面上检查查询字符串时,我没有得到相同的代码(不是我输入的文本)。

任何人都知道有什么事吗?是因为数据来自asp.net文本框? 我该怎么办呢?

p.s在发送之前我已经检查过并且每件事情都应该如此,只是在查询字符串中出现问题... 10X

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

首先, Praveen Prasad 的回答我认为是正确的。我只想添加一些描述,它将回答“为什么......?”的问题。而不是“怎么......?”。

如果您根据HTTP GET发送到服务器的参数有一些特殊字符,那么在没有编码的情况下不能在URL中使用,因此您必须至少使用

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

下一步:您可以使用jQuery.param()encodeURIComponent地点'&'的网址参数进行编码参数之间的字符

$.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})

哪个地方'?'如果url尚未包含',则由data编码的$.paramurl之间?否则它会改为使用'&'

下一步:只要有可能,你应该尝试使用$.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 */
    }
})