2014-10-22 3 views
1

Когда я пытаюсь опубликовать символ ?? два раза через AJAX jQuery, он публикует как это jQuery18306004520743153989_1413985407818. Например, если я этот пост: What ?? то вывешивает как What jQuery18306004520743153989_1413985407818 и если я отправляю как: What ??? то вывешивает как это: What jQuery18306004520743153989_1413985407818? < - Обратите внимание на окончание одного ?Нестандартное поведение на посту AJAX

Почему это так?

Мой JQuery код регистраци:

$(".textbox2").on('keypress', function (e) { 

      if (e.keyCode == 13 && !e.shiftKey) 
      { 
       e.preventDefault(); 

       var message = $("#message").val(), 
        privateid = $("#private"); 

       if (message == '') 
       { 
        alert("Message is missing!!"); 
        return; 
       } 

       if (privateid.is(':checked') ? 1 : 0) 
       { 
        var privateidVal = privateid.val(); 
       } 

       $.ajax({ 
          type  : "post", 
dataType: "json", 
          url  : "chat_insert.php", 
          data  : "message=" + message + "&private=" + privateidVal + "&action=addcomment", 
          success : function (data) { 

           showComment(); 
           document.getElementById('message').value = ''; 
           document.getElementById('message').focus(); 
           document.getElementById('private').checked = ''; 


if (data.error) { 
alert(data.error); 
    } 
          } 
         }); 
      } 

     }); 

и Да мой message столбец в SQL имеет параметры сортировки utf8_general_ci.

Пожалуйста, помогите

ответ

4

Вам нужно кодировать параметры вы передаете:

 data  : "message=" + 
        encodeURIComponent(message) + 
        "&private=" + 
        encodeURIComponent(privateidVal) + 
        "&action=addcomment", 

В качестве альтернативы, вы можете настроить «данные» компонент, как объект, и JQuery будет делать эту работу для вы:

 data : { 
      message: message, 
      private: privateidVal, 
      action: "addcomment" 
     }, 

Кроме того, пока я на нее, такую ​​строку:

  if (privateid.is(':checked') ? 1 : 0) 

можно записать более просто как

  if (privateid.is(':checked')) 

The .is() функция возвращает значение, которое уже непосредственно использоваться в тесте if.

+0

Спасибо Поинт, это работает :) – user2854563

Смежные вопросы