Попытка выхода из URI при публикации через ajax в базу данных. Что я делаю неправильно? - PullRequest
3 голосов
/ 26 июля 2011

Я извлекаю атрибут src из тега изображения и отправляю его в свою базу данных с помощью вызова ajax, который затем используется для формирования файла XML.Мне действительно нужно избежать этого пути к изображению, и я, похоже, весьма озадачен тем, как это сделать.Попытка использовать encodeURIComponent без особой удачи.Ниже мой код.Спасибо за любую помощь!

$('.drag-elem').each(function () {
    var xml = '<clother><id>' + $(this).children('img').attr('class') + 
        '</id><title>' + $(this).children('img').attr('alt') + '</title><z-index>' +
        $(this).css('z-index') + '</z-index><top>' + $(this).css('top') + 
        '</top><left>' + $(this).css('left') + '</left><file>' + 
        encodeURIComponent($(this).children('img').attr('src')) +
        '</file></clother>';
});

Ответы [ 2 ]

1 голос
/ 26 июля 2011

Вы должны использовать encodeURI. Потому что encodeURIComponent не подходит для полных путей.


Попробуйте использовать функцию кодирования xml (encodeXml), очищающую ваш xml от усилителей:

var xml_special_to_escaped_one_map = {
'&': '&amp;',
'"': '&quot;',
'<': '&lt;',
'>': '&gt;'
};

var escaped_one_to_xml_special_map = {
'&amp;': '&',
'&quot;': '"',
'&lt;': '<',
'&gt;': '>'
};

function encodeXml(string) {
return string.replace(/([\&"<>])/g, function(str, item) {
return xml_special_to_escaped_one_map[item];
});
};

function decodeXml(string) {
return string.replace(/(&quot;|&lt;|&gt;|&amp;)/g,
function(str, item) {
return escaped_one_to_xml_special_map[item];
});
}

Отсюда: http://dracoblue.net/dev/encodedecode-special-xml-characters-in-javascript/155/

0 голосов
/ 26 июля 2011

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

попробуйте изменить библиотеку javascript (jquery?) И попробуйте другой браузер.И попробуйте разбить строку на переменные, чтобы решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...