jQuery html () и & - PullRequest
       41

jQuery html () и &

4 голосов
/ 09 сентября 2009

Я делаю поиск в списке людей. И я хочу, чтобы он показывал результаты на лету, и так оно и есть. Но есть одна ссылка, которая мне нужна, и она должна выглядеть так:

chatid=18&userid=45&create=new

но после отображения результатов через это:

$.get('/ajax.php', {sec: 'search_users', ajax: 1, search_for: $(this).val()}, function(data)
{
    $(".rBoxContentStaff").html(data);
});

Я получаю этот результат:

chatid=18&userid=45&create=new

И ссылка не работает. Кажется, это происходит в html () и append ().

Я не нашел решения для этого, поэтому мне пришлось изменить запуск ссылки.

Ответы [ 5 ]

2 голосов
/ 09 сентября 2009

Вы сказали, что пытаетесь установить правильный путь ссылки?
Если это так, попробуйте это

$(".rBoxContentStaff").attr("href", data);

.html() меняет & на html & (&), но с помощью .attr("href") задает путь ссылки, и он также работает с & s

2 голосов
/ 09 сентября 2009

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

$(".rBoxContentStaff").html(data); });

Попробуйте это:

$(".rBoxContentStaff").append(data); });

text () экранирование символов html ... Я не могу найти ничего о html () экранирование символов (и действительно, его документация указывает на иное.
Однако после тестирования с предупреждением по предложению jmein он действительно кодирует специальные символы. Append () не делает этого.

1 голос
/ 09 сентября 2009

html специальные символы по запросу ajax, не интерпретируются браузером ... вот почему ссылки вышли именно так. Одна вещь, которую вы можете сделать, это заменить sstring в javascript:

data = str.replace(/&/, "&");
0 голосов
/ 05 октября 2011

И есть также способ конвертировать, получая только текст (<a /> просто помощник):

$('<a /'>).html(data).text()

Это переместит &amp; в &, а также все другие специальные символы, такие как &imp; и т.д ...

0 голосов
/ 10 сентября 2009

Вы должны попробовать использовать функцию $ .ajax () вместо $ .get ().

С помощью $ .ajax () вы можете сами указать свой тип данных (и использовать другие параметры).

Попробуйте что-то вроде этого:

$.ajax({
type: "GET",
url: "/ajax.php",
data: "sec=search_users&ajax=1&search_for="+$(this).val(),
cache: false,
dataType: "html",
success: function(html){
    $(".rBoxContentStaff").html(html);
} });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...