Javascript и проблемы

0

У меня есть следующий код:

var artist = document.getElementById("txtBoxArtist").value;

Когда значение представляет собой обычный текст, например Biffy Clyro, artist = Biffy Clyro

Когда значение содержит & , например, Mumford & Sons, artist = Mumford

Я передаю значение исполнителя с помощью AJAX и восстанавливаю значение на другой php-странице следующим образом:

var data = "nameTitle=" + title + "&nameArtist=" + artist;

[...]

$nameArtist=$_POST['nameArtist'];

Почему это происходит и как его избежать? Это дает мне много проблем, это & символ...

Спасибо вам всем!

  • 0
    Попробуйте использовать textarea вместо input
  • 2
    Wooot, свойство value всегда является строкой, оно не закодировано с сущностями, так что это невозможно?
Показать ещё 8 комментариев
Теги:

3 ответа

0
Лучший ответ

Я думаю, вы можете кодировать valiables перед отправкой их следующим образом:

 artist = encodeURIComponent(artist);
 title = encodeURIComponent(title);
 var data = "nameTitle=" + title + "&nameArtist=" + artist;

надеюсь это поможет.

  • 2
    Нет, не должно, это явно проблема. encodeURIComponent() является правильным.
  • 0
    @JaredFarrish, спасибо за полезные советы.
Показать ещё 6 комментариев
2

Вам необходимо закодировать значения, прежде чем вставлять их в URL.

var data = "nameTitle=" + encodeURIComponent(title) + "&nameArtist=" + encodeURIComponent(artist);

Вы также должны это увидеть.

  • 2
    Обратите внимание, что encodeURIComponent ) является правильным (не encodeURI ): обратите внимание, что кодировщик сама по себе encodeURI не может формировать правильные HTTP-запросы GET и POST , например, для XMLHTTPRequests, поскольку «&», «+» и «=» не кодируются , которые обрабатываются как специальные символы в запросах GET и POST. Однако encodeURIComponent кодирует эти символы. MDN
1

Некоторые символы являются специальными и нуждаются в "экранировании" для кодирования их значений - поскольку вы показываете, используя & вместо &.

Однако эти принципы убегания различны для содержимого HTML и URL/URI.

В URI & экранируется как %26 а не как & - поэтому вы должны либо использовать это, либо соответствующие функции кодирования/декодирования, а не кодирование/декодирование объекта HTML.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню