通过AJAX发送特殊字符(“<”,“>”,“&”)

时间:2011-11-30 22:06:39

标签: php jquery ajax post htmlspecialchars

我通过jquery的ajax请求发送一些测试。 本文包含一些特殊字符,如“& lt”,“& gt”,“& amp”,代表<,>和&。

$.ajax({
 type: "POST",
 url: "page.php",
 data: "content="+txt });

不幸的是,字符串传输不好。只传输开头,并在第一个特殊字符处剪切。

例如,如果我发送“blablabla& ltgrogrogro”,服务器只会收到“blablabla”

我该如何解决?

PS:特殊字符实际上以“;”结尾,我没说,因为否则它们没有很好地显示。

2 个答案:

答案 0 :(得分:2)

这是设计使然:如果您将字符串传递给data,它将被视为表单URLencoded数据(如查询字符串)。在该格式中,&表示新参数的开始。数据中的&符号需要进行URL编码。

您需要在传输之前对数据进行URLencode编码 - 在PHP中,正确的函数将是urlencode() - 或者传递jQuery将自动编码的数组:

data: {"content": txt }

答案 1 :(得分:2)

&安培;表示数据查询字符串中的另一个变量。所以,你应该使用像这样的JavaScript对象发送它:

$.ajax({
    type: "POST",
    url: "page.php",
    data: {
        "content": txt
    }
});