解析XML字符串作为XML对象后没有执行
问题描述:
我有一个表单,点击提交按钮后,将运行一个函数,它接受所有表单数据输入,从中创建一个xml字符串,然后将该字符串解析为一个xml对象所以它可以发送到ASP.NET Web服务。解析XML字符串作为XML对象后没有执行
这里是我的功能:
function postData()
{
var cb = document.getElementById('paymentList');
var selected_cb = cb.options[cb.selectedIndex].text;
var pguid = getParameterByName('guid');
var xmlString = '<string>' +
addField('approver', $('#approver').val()) +
addField('companyName', $('#companyName').val()) +
addField('emailAddress', $('#emailaddress').val()) +
addField('address1', $('#address1').val()) +
addField('address2', $('#address2').val()) +
addField('city', $('#city').val()) +
addField('province', $('#province').val()) +
addField('country', $('#country').val()) +
addField('postalCode', $('#postalcode').val()) +
addField('phoneNumber', $('#phone').val()) +
addField('paymentMethod', selected_cb);
xmlString+='<contractData>';
$('#table tbody tr:has(img[src="images/checkmark.png"])').each(function() {
xmlString += '<contract>' + addField('vendorPart', $('td:eq(1)', this).text()) +
addField('description', $('td:eq(2)', this).text()) +
addField('price', $('td:eq(3)', this).text()) +
addField('quantity', $('td:eq(4) input', this).val()) + '</contract>';
});
xmlString += '</contractData></string>';
//var vguid = getParameterByName('guid');
var properid = 'somedata';
xmlDoc = $.parseXML(xmlString);
alert("alert");
$xml = $(xmlDoc);
$.ajax({
type: "POST",
url: "webserviceurl",
data: {tnWsGuid:properid, xml: $xml},
dataType: "xml",
success: function() {
//window.location.href = 'somePage.html'
alert("posted");
},
error: function()
{
alert("error");
}
});
}
第33行,警报不运行,任何之后的$ .parseXML不执行(将警报的parseXML功能确实熄灭之前)。这意味着它不会向我的网络服务发布任何内容。任何关于为什么将这个设置为一个有效的xml对象后的想法之后没有任何工作?
此外,在成功功能,你会注意到我正在改变页面,这不适用于IE浏览器,但工作在Chrome和FireFox罚款。
** 更新 ** 错误是,其中有&符号插入它的XML输入一个字段的数据来了...就使其接受任何想法?
function addField(name, value) { // Add a single element and value
return '<' + name + '>' + value + '</' + name + '>';
}
答
问题是您正在从纯文本形成XML,但未处理XML的转义语法。最简单的方法是使用转义函数:how to escape xml entities in javascript?
然后在addField
函数中,在value
上调用此转义函数。
按F12键并读取控制台,最有可能的是XML对于IE无效。 – 2013-05-01 14:59:28
XML5618:非法名称字符。 ,line 1 character 75 不知道该去哪里... – Surep 2013-05-01 15:11:32
你的xml里有没有'&'?他们需要逃脱。找出该xml字符串的字符75处的字符。 – 2013-05-01 15:13:09