.each()方法在IE中不起作用

时间:2011-05-11 07:32:02

标签: jquery json

在成功方法中,我无法遍历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>

4 个答案:

答案 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>