Потеря Unicode Char при отправке через строку запроса в вызове AJAX - PullRequest
1 голос
/ 25 сентября 2010

Я пытаюсь отправить некоторые данные в вызове Ajax, чтобы обновить запись на сервере

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

«Примечания» в Unicode.

Когда я проверяю строку запроса на принимающей странице, я получаю не тот же код (не текст, который я ввел).

Кто-нибудь знает что-нибудь об этом? это потому, что данные из текстового поля asp.net? что я могу с этим поделать?

p.s перед отправкой я проверил, и все в порядке, просто в строке запроса все идет не так ... 10x

Ответы [ 2 ]

6 голосов
/ 25 сентября 2010
jQuery.ajax({
            url:'AjaxActions/OrderNotesUpdate.aspx',
            data:{
                 OrderID:OrderID,
                 Notes:$('#txtNotes').val()
                 },
           async:false,
           type:'get',
           success:function(data)
                   {
                    //do something here
                    }
})
4 голосов
/ 25 сентября 2010

Прежде всего ответ Правин Прасад Я считаю правильным.Я хочу только добавить небольшое описание, которое будет отвечать на вопрос "Почему ...?"а не «Как ...?».

Если параметр, который вы отправляете на сервер по HTTP GET, имеет какие-то специальные символы, то его нельзя использовать в URL без кодировки , поэтому вынеобходимо использовать как минимум

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

Следующий шаг: вы можете использовать jQuery.param() для кодирования параметров URL с учетом 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, закодированными $.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 */
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...