如何转义通过 JQuery ajax 函数发送的查询字符串中的特殊字符?

Posted

技术标签:

【中文标题】如何转义通过 JQuery ajax 函数发送的查询字符串中的特殊字符?【英文标题】:How to escape special characters in query string sent via JQuery ajax function? 【发布时间】:2011-06-21 18:45:43 【问题描述】:

我需要 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 正在通过 JQuery 的 ajax 函数:

  $("#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

【问题讨论】:

【参考方案1】:
import urllib;
urllib.urlencode("string");

我希望这会有所帮助!

【讨论】:

【参考方案2】:

看看这个: http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

所以:变成 %3A 顺便说一句...大多数现代浏览器会自动执行此操作。

【讨论】:

【参考方案3】:

Python:

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

Django:

message= message|urlencode 

【讨论】:

谢谢,那么我将如何对上面字段中的值进行编码?刚刚用我的模板代码更新了帖子。 不,不是。根据 Firebug,它是原始字符串,当我从服务器打印出来时,它被截断为“加入命令游戏”。 更新了原帖。我正在通过 JQuery 发送 - 这一定是问题所在。

以上是关于如何转义通过 JQuery ajax 函数发送的查询字符串中的特殊字符?的主要内容,如果未能解决你的问题,请参考以下文章

JQuery Validate插件如何自定义验证方法(结合ajax实现数据库的查重)

如何防止 PHP PDO 通过 jQuery AJAX 插入 MySQL varchar 中的转义字符

JQuery学习之Ajax应用

JQuery学习之Ajax应用

如何通过 AJAX 将 jquery 对象数据发送到 php?

如何通过 Ajax jQuery 将简单数据发送到 Django 中的views.py?