尝试通过ajax发布到数据库时转义URI。我究竟做错了什么?

时间:2011-07-25 20:00:23

标签: javascript html ajax escaping

我从图像标记中获取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 个答案:

答案 0 :(得分:1)

您必须使用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/

答案 1 :(得分:0)

很难说,因为它看起来对我很好。尝试复制,在我的浏览器中很好。

尝试更改javascript库(jquery?)并尝试其他浏览器。并尝试将字符串分解为变量以解决问题。