Отправить специальные символы через AJAX ("<", ">", "&") - PullRequest
1 голос
/ 01 декабря 2011

Я отправляю тест через ajax-запрос jquery. Этот текст содержит некоторые специальные символы, такие как "& lt", "& gt", "& amp", которые обозначают <,> и &.

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

К сожалению, строка плохо передается. Передается только начало, и оно обрезается по первому специальному символу.

Например, если я отправлю «blablabla & ltgrogrogro», сервер получит только «blablabla»

Как я могу это исправить?

PS: специальные символы на самом деле заканчиваются на ";", я не ставил его, потому что в противном случае они отображаются плохо.

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

& представляет другую переменную в строке запроса данных.Итак, вы должны отправить его с помощью объекта JavaScript, например, так:

$.ajax({
    type: "POST",
    url: "page.php",
    data: {
        "content": txt
    }
});
2 голосов
/ 01 декабря 2011

Это сделано специально: если вы передадите строку в data, она будет обрабатываться как данные, закодированные с помощью URL-адреса формы (например, строка запроса).В этом формате & обозначает начало нового параметра.Амперсанды в данных должны быть URL-кодированы.

Вам потребуется либо URL-кодировать ваши данные перед передачей - в PHP правильная функция будет urlencode() - либо передать массив, который jQuery будет кодировать автоматически:

data: {"content": txt }
...