通过POST传递“&”

通过POST传递“&”

问题描述:

我传递变量以通过AJAX提交文件,但当传递包含“&”字符的变量时遇到问题。我知道为什么,因为它弄乱了字符串,如id = 1 & name = blabla & something = q & a。通过POST传递“&”

但我该如何使它工作?

有人想代码,这里是

$("#btnCatEditSubmit").click(function() 
      { 
       $.ajax(
       { 
        type: "POST", 
        url: "catEditSubmit.php", 
        data: "catID=<?= $catID ?>" + "&catName=<?= $catName ?>", 
        success: function(data) 
        { 
         alert(data); 
        } 
       }); 
      }); 

catName可能是“东西&东西”,然后我有问题。

+0

请出示一些代码 – 2011-02-02 18:06:23

+0

你需要使用PHP还是JavaScript? – 2011-02-02 18:08:14

你必须编码/转义它们。

在PHP中,你可以做到这一点与urlencode()功能:

$string = urlencode($string); 

因此,在你的代码,这样做:

data: "catID=<?= urlencode($catID) ?>" + "&catName=<?= urlencode($catName) ?>", 

甚至更​​好:

data: <?=json_encode(array('catID' => $catID, 'catName' => $catName))?>, 

( jQuery允许你直接传递键值对的哈希,所以jQuery可以为你转义。以JavaScript可理解的方式格式化数组)。


在JavaScript中,你可以做一个使用encodeURIComponent()函数:

var escaped_string = encodeURIComponent(str); 

但是当你正在使用jQuery,你也可以直接用哈希传递变量。

而是这样做:

$.ajax({ 
    data: "a=b&c=d", 
    ... 
}); 

这样做:

$.ajax({ 
    data: {a: "b", c: "d"}, 
    ... 
}); 

和jQuery将难逃你的一切。

+0

谢谢,解决了我的问题。 – sed 2011-02-02 18:13:56

使用PHP的urlencode()函数可使您的参数值具有URL安全性。

您需要对您的&进行网址编码。代码是%26

您需要转义&字符,因为它在URL中有特殊的含义。您可以使用原生功能encodeURIComponent,做到这一点,或者因为你是使用jQuery使用$.param helper方法:

var querystring = $.param({ 
    id: 1, 
    name: 'blablah', 
    something: 'q&a' 
}); 

您需要使用%26逃离“&”字