Как экранировать специальные символы в строке запроса, отправленной через функцию jjuery ajax? - PullRequest
4 голосов
/ 05 февраля 2011

Мне нужно POST короткие сообщения на сервер. Иногда они имеют специальные символы, как в этом примере:

&message=Joining a game of Commands & Colors: Ancients.

Как мне выбрать специальные символы из строки запроса?

Я использую Django. Вот поле, которое мне нужно кодировать:

<textarea class="text-area" id="message" name="message" rows="3" cols="30">
   Joining a game of {{ game.name }}.
</textarea>

ОБНОВЛЕНИЕ: я понимаю, что POST проходит через функцию ajax JQuery:

  $("#checkin-button").click(function() { 
          var mid = $("input#mid").val();
          var message = $("textarea#message").val();
          var facebook = $('input#facebook').is(':checked');
          var name = $("input#name").val();
          var bgg_id = $("input#bgg-id").val();
          var thumbnail = $("input#thumbnail").val();
          var dataString = 'mid='+mid+'&message='+message+'&facebook='+facebook+'&name='+name+'&bgg_id='+bgg_id+'&thumbnail='+thumbnail;  
    $.ajax({  
      type: "POST",  
      url: "/game-checkin",  
      data: dataString,  

Значит, я не правильно передаю (urlencoded), верно?

ОБНОВЛЕНИЕ: после того, как я понял, что проблема связана с JQuery, я смог ее исправить, заменив присвоение переменной данных на:

    data: {"mid": mid, "message": message, "facebook": facebook, 
"name": name, "bgg_id": bgg_id, "thumbnail": thumbnail}

Ответы [ 3 ]

7 голосов
/ 05 февраля 2011

Python :

>>> urllib.urlencode({'message': 'Joining a game of Commands & Colors: Ancients.'})
'message=Joining+a+game+of+Commands+%26+Colors%3A+Ancients.'

Джанго :

message={{ message|urlencode }}
3 голосов
/ 05 февраля 2011
import urllib;
urllib.urlencode("string");

Надеюсь, это поможет!

0 голосов
/ 05 февраля 2011

Взгляните на это: http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

Итак: становится% 3A
Кстати ... большинство современных браузеров делают это автоматически.

...