【发布时间】:2013-05-01 14:55:34
【问题描述】:
我有一个表单,它在单击提交按钮时运行一个函数,该函数接受所有表单数据输入,从中创建一个 xml 字符串,然后将该字符串解析为 xml 对象,以便将其发送到 ASP.NET网络服务。
这是我的功能:
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 + '>';
}
【问题讨论】:
-
按 F12 并读取控制台,很可能 XML 对 IE 不够有效。
-
XML5618:非法名称字符。 ,第 1 行字符 75 不知道该去哪里...
-
你的xml中有
&吗?他们需要逃脱。找出那个 xml 字符串的第 75 个字符是什么字符。 -
我将xml字符串复制并粘贴到网站www.xmlvalidation.com 并没有发现错误,更新了上面问题中的数据,以便您也可以看到它。
-
addField是做什么的?
标签: jquery xml ajax web-services http