我正在向 ASP.NET C# 函数发送 AJAX 调用。AJAX 调用没有问题地完成,但 XML 响应返回为空。这是Javascript代码:
$.ajax({
type: "POST",
url: "Default.aspx/a1",
data: '{}',
contentType: "application/json",
dataType: "text/xml",
async: true,
success: function (data) {
alert("success");
var x = data.documentElement.childNodes[0].childNodes;
var name = '', value = '', str = '';
for (i = 0; i < x.length; i++) {
//Get node name and its string value
name = x[i].nodeName;
value = x[i].text;
str += name + ':' + value + ', ';
}
alert(str);
},
error: function (a, b, c) { alert("problem in Main.aspx"); }
});
这是网络方法:
[WebMethod]
public static XmlDocument a1()
{
DataTable table1 = new DataTable("patients");
table1.Columns.Add("name");
table1.Columns.Add("id");
table1.Rows.Add("sam", 1);
table1.Rows.Add("mark", 2);
DataTable table2 = new DataTable("medications");
table2.Columns.Add("id");
table2.Columns.Add("medication");
table2.Rows.Add(1, "atenolol");
table2.Rows.Add(2, "amoxicillin");
// Create a DataSet and put both tables in it.
DataSet set = new DataSet("office");
set.Tables.Add(table1);
set.Tables.Add(table2);
// Visualize DataSet.
XmlDocument doc = new XmlDocument();
doc.LoadXml(set.GetXml());
return doc;
}
我使用 Internet Explorer,按 F12 并捕获响应返回 200 OK 的网络消息,看截图:
http://postimg.org/image/705copynl/
当在 C# 函数的末尾添加一个手表时,我看到 XML 填充了数据:
http://postimg.org/image/my6rgaril/
但是在 Visual Studio 中,我在 AJAX 调用中添加了一个手表,并意识到变量数据返回为空!
http://postimg.org/image/atkgmnklp/
这也在 Internet Explorer 的网络消息捕获中得到验证:
http://postimg.org/image/o32z0hyq5/
怎么了?!为什么我没有在 Javascript 中获得 XML 响应?我花了几天时间尝试不同的数据类型替代方案,但我无法在 XML 中得到答案!任何人都可以就这里可能出现的问题提出建议。