Передача "&" по почте - PullRequest
       2

Передача "&" по почте

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

Я передаю переменные для отправки файла через AJAX, но у меня проблема, когда я передаю переменную, которая содержит символ «&».Я знаю почему, потому что это портит строку вроде id = 1 & name = blabla & что-то = q & a.

Но как я могу заставить его работать?

Кто-то хотел код, вот он

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

catName может быть "Something & Something", и тогда у меня проблема.

Ответы [ 5 ]

6 голосов
/ 02 февраля 2011

Вы должны кодировать / экранировать их.

В PHP вы можете сделать это с помощью функции urlencode():

$string = urlencode($string);

Так в вашем коде, сделайте это:

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

Или даже лучше:

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

(jQuery позволяет напрямую передавать хэш пар ключ-значение, поэтому jQuery может позаботиться о экранировании для васЗдесь json_encode форматирует ваш массив способом, понятным javascript).


В javascript вы можете сделать это с помощью функции encodeURIComponent ():

var escaped_string = encodeURIComponent(str);

Но так как вы используете jQuery, вы также можете передавать переменные напрямую с помощью хеша.

Вместо этого:

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

Сделайте это:

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

И jQuery избавится от всего для вас.

2 голосов
/ 02 февраля 2011

Вы должны экранировать символ "&", используя% 26

1 голос
/ 02 февраля 2011

Вам необходимо кодировать URL &.Код %26.

1 голос
/ 02 февраля 2011

Используйте PHP-функцию urlencode () , чтобы сделать значения параметров безопасными для URL.

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

Вы должны экранировать символ &, так как он имеет особое значение в URL.Это можно сделать с помощью встроенной функции encodeURIComponent или, поскольку вы используете jQuery, с помощью вспомогательного метода $.param:

var querystring = $.param({
    id: 1,
    name: 'blablah',
    something: 'q&a'
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...