2011-02-02 191 views
0

我傳遞變量以通過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

回答

6

你必須編碼/轉義它們。

在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

1

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

1

您需要對您的&進行網址編碼。代碼是%26

0

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

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