在成功方法中,我无法遍历xml响应。
WebMethod是:
Public Shared Function GetTypes(ByVal TypeID As Integer) As String
Dim db As New DbManager
Dim ds As New DataSet
db.AddParameter("@TypeID", TypeID)
ds = db.ExecuteDataSet("GetTypes")
ds.Tables(0).TableName = "Types"
Dim jsSer As New System.Web.Script.Serialization.JavaScriptSerializer
Return jsSer.Serialize(ds.GetXml())
End Function
成功方法
SuccessMethod: function (response, that) {
$(response).find('Type').each(function (index) {
alert("called");
})
});
xml响应是:
<TypeID>12</TypeID>
<RecordID>5</RecordID>
<CreatedOn>2011-04-24T09:00:00+05:00</CreatedOn>
<Type>Here is type.</Type>
<TypeID>22</TypeID>
<RecordID>5</RecordID>
<CreatedOn>2011-05-08T09:30:00+05:00</CreatedOn>
<Type>Here is type.</Type>
答案 0 :(得分:0)
您的xml响应包含“类型”,它不包含“类型”...
答案 1 :(得分:0)
尝试使用filter()代替。查找通常会查找您使用它的选择的子元素。
答案 2 :(得分:0)
也许你也可以使用:
$.each($(response).find('Type'), function(index, value) {
alert('succes');
}
也许IE搞砸了差异语法,这就是jQuery的网站如何描述这个功能。虽然我的第一个猜测是你的方法aswel ..
答案 3 :(得分:0)
这在IE中适用于我:
response = '<root>' + response + '</root>';
xmlDoc = $.parseXML(response);
$(xmlDoc).find('Type').each(function (index,val) {
alert("called");
});
顺便提一下,jquery 在解析XML时是区分大小写的,因此选择器必须是'Type',而不是'type'。我不得不将问题中给出的响应包含在根元素内,以使其有效xml。它可以是任何唯一标记,不一定是<root>