2012-05-04 4 views
0

У меня есть сервис moss, который выводит URL-адрес изображения.странные символы (amp;), добавленные к выходу сервиса moss

Допустим, что у выходного url есть символ «&», вспомогательный усилитель; рядом с &.

для ex: Directory.aspx? & z = BWxNK

Здесь amp; дополнительно добавляется. это мох. поэтому у меня нет контроля над устройством.

что я могу сделать, это декодировать выход. Поскольку я использую Ajax-вызовы для вызова moss-sevice, я вынужден декодировать вывод из javascript. Я попробовал decodeURIComponent, decodeURI, unescape. ничто не решило проблему.

Любая помощь очень ценится. даже функция на стороне сервера также полезна. я использую Aspl.net MVC3

С уважением, Kumar.

+2

'&' - это замена символа '&'. Ничего странного в этом нет. Вам нужно расшифровать url –

+2

@Topener - Нет, это не так. '% 26' является заменой URL-адреса для' & '! '&' - это SGML-кодировка (и такие производные, как HTML и XML). – Quentin

+0

@Quentin ах право. Виноват. Я смущаю эти вещи;) –

ответ

0

& не кодируется в кодировке URI, кодируется HTML.

Для решения на стороне сервера, вы можете сделать это:

Server.HtmlDecode("&") // yields "&" 

Для решения JavaScript, вы можете установить HTML в "&" и зачитали текст , для имитации декодирования HTML. В JQuery, он может выглядеть следующим образом:

$("<span/>").html("&amp;").text(); // yields "&" 
+0

Tahnks David, это сработало как шарм. могу ли я правильно вызвать функцию html без временного элемента span. – Brainchild

+0

Нет, что вы делаете в этом фрагменте кода, это установить содержимое HTML временного промежутка, который вы создаете (но никогда не добавляете в документ), поэтому вам действительно нужна переменная-заполнителя, чтобы добавить HTML-код в , из которого вы можете прочитать текст. –

0

&amp; является SGML/XML/HTML для &.

Если служба выводит XML-документ, убедитесь, что вы используете синтаксический анализатор XML для его анализа (а не регулярных выражений или чего-то подобного безумного).

В противном случае вам необходимо декодировать (предположительно) HTML. В JavaScript самый простой способ сделать это:

var foo = document.createElement('div'); 
foo.innerHTML = myString; 
var url = foo.firstChild.data; 
+0

мой сервис возвращает строку. и он уже закодирован. – Brainchild

 Смежные вопросы

  • Нет связанных вопросов^_^