我有一个返回JSON
数据的jquery函数:
此功能适用于Google Chrome,但不适用于Internet Explorer(v11)。
$(document).ready(function () {
$.ajax({
url: "/../Projects/1/_vti_bin/ListData.svc/Prosjectlist?$select=ID,Tittel,Project_typeValue,Project_heading&$filter=(Project_typeValue%20eq%20%27Type1%27)",
method: "GET",
dataType: "JSON",
headers: { "accept": "application/json; odata=verbose" },
success: function (data) {
$('#projectRow').empty();
$.each(data.d.results, function (index, item) {
var itemExist = false;
$.each($('.projectRow').find('h1'), function (index1, item1) {
if (item1.innerHTML == item.Project_heading) {
itemExist = true;
$(item1).parent().append("<h3><a id='" + item.ID + "' class='projectLink' href='#'>" + item.Title + "</a></h3>");
}
});
if (itemExist == false)
$('.projectRow').append("<div class='projectHeadingDiv left'><li><h1>" + item.Project_heading + "</h1><h3><a id='" + item.ID + "' class='projectLink' href='#'>" + item.Title + "</a></h3></div></li></div>");
});
},
error: function (error) {
alert(JSON.stringify(error));
}
});
我正在使用jQuery 1.5.2(如果我使用更新的东西,Sharepoint 2010会变得模糊)。我一直在看IE11中的调试器,数据就在那里,它只是不会附加到我的div。似乎追加可能是罪魁祸首,因为如果我用.append()
替换.html()
,我可以看到$each-loop
中的最后一项。 E.g:
$(item1).parent().html("<h3><a id='" + item.ID + "' class='projectLink' href='#'>" + item.Title + "</a></h3>");
有谁知道为什么.append在Chrome中运行而不是IE?控制台没有提供任何错误消息,因此没有线索。但是,如果我要改变&#34;文档模式&#34;在IE开发工具中,从8(默认)到9或更高,它似乎可以正常工作。
非常感谢任何帮助。
答案 0 :(得分:1)
您有两个不匹配的结束标记</div></li>
。修复HTML,它应该工作:
<div class='projectHeadingDiv left'><li><h1>" + item.Project_heading + "</h1><h3><a id='" + item.ID + "' class='projectLink' href='#'>" + item.Title + "</a></h3></div>
Chrome和Firefox对这些粗心的开发者更加宽容。但IE对这种错误更敏感(我实际上认为这很好)。