客户端脚本获取文本输入中的文本,将其“包装”在 XML 块中,然后将其发送到将信息存储在 MySQL 数据库中的服务器。
作为包装输入值之前的第一步,我像这样转义“&”字符:
var copyright = copyright.replace(/&/g,"&");
生成的 XML 数据块使用 jquery 的方法发送到服务器ajax
:
var copyright = copyright.replace(/&/g,"&"),
xml = "<request><session>"+session+"</session><space>"+space_id+"</space><view>"+view_id+"</view><copyright>"+copyright+"</copyright></request>",
url = "hidden URL";
$.ajax({
type: "POST",
url: url,
contentType: "text/xml; charset=UTF-8",
dataType: "xml;charset=UTF-8",
data: xml
});
稍后在此操作之后,需要检索先前保存在数据库中的内容并在网页中显示:
$.ajax({
type: "POST",
url: url,
dataType: 'xml',
data: xmlString,
success: function(xml) {
var XML = $(xml);
// Process the data retrieved
},
error: function(jqXHR, textStatus, errorThrown) {
var XML = $(jqXHR.responseText);
console.log("error: "+textStatus+"\n"+errorThrown);
}
});
如果在输入字段中键入 & 符号然后保存,当尝试加载显示相同先前保存的内容的页面时,ajax 调用中断并运行error
事件处理程序,并出现以下错误:
error: parsererror
Error: Invalid XML: <?xml version="1.0" encoding="UTF-8"?><response><target>
<target_id>2095466</target_id>
<plot>20029/13</plot>
<builder>Lemminkäinen</builder>
<housing_form>vm</housing_form>
<block_name></block_name>
<finnish_year>2013</finnish_year>
<target_name>As Oy Helsingin Saukonranta</target_name>
<target_address>Saukonpaadenranta 8</target_address>
<office_space></office_space>
<purpose></purpose>
<reservations></reservations>
<contacts></contacts>
<infoflag>2</infoflag>
<views>
<view>
<view_id>2095468</view_id>
<copyright>B&M</copyright>
</view>
</views>
</target>
<status>OK</status><errormsg></errormsg></response>
我做错了什么?我是在错误地转义字符,还是其他原因?
这个问题似乎是重复的,但对我来说似乎不是这样,因为与号字符在存储之前已经被转义。我什至尝试在转义字符串中添加额外的 (1, then two) amp;
,但结果完全相同。