当我在一天的开始访问某个特定页面时,不会显示任何数据。刷新同一页后,数据将出现如预期所述。如果我一个小时后再次访问同一页,则数据仍将显示。然而,到了第二天,同样的情况又会发生。第一次访问页面时没有数据,但刷新后就会出现。
所涉及的页面使用带有ajax调用的jquery脚本。
该脚本本身是在Sharepoint 2010环境中使用的,并使用ListData.svc获取数据(名称,ID,类型等),获取实际数据似乎不是问题(至少在我刷新时不是)。
有人有想法这可能是为什么吗?
代码:
所涉及的页面使用带有ajax调用的jquery脚本。
该脚本本身是在Sharepoint 2010环境中使用的,并使用ListData.svc获取数据(名称,ID,类型等),获取实际数据似乎不是问题(至少在我刷新时不是)。
有人有想法这可能是为什么吗?
代码:
<script type="text/javascript">
$(document).ready(function () {
function getUrlVars() {
var vars = [], hash;
var hashes = window.parent.location.href.slice(window.parent.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
var pTypeval = getUrlVars()["projectType"];
$('#projTypeHeader').append(unescape(pTypeval));
$.ajax({
url: "/../Projects/1/_vti_bin/ListData.svc/Projectlist?$select=ID,Projectname,ProjectTypeValue,ProjectHeading,PublishInfoscreen&$filter=(ProjectTypeValue%20eq%20%27" + pTypeval + "%27)%20and%20(PublishInfoscreen%20eq%20true)",
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.ProjectHeading) {
itemExist = true;
$(item1).parent().append("<h3><a id=" + item.ID + " class='projectLink' href='javascript:void(0)'>" + item.Projectname+ "</a></h3>");
}
});
if (itemExist == false)
$('.projectRow').append("<div class='projectHeadingDiv left'><li><h1>" + item.ProjectHeading + "</h1><h3><a id='" + item.ID + "' class='projectLink' href='javascript:void(0)'>" + item.Projectname+ "</a></h3></div>");
});
},
error: function (error) {
alert(JSON.stringify(error));
}
});
});
</script>
更新: 根据评论中的建议,我尝试将函数getUrlVars()从document.ready中移出,但这并没有帮助。 然而,今天早上我尝试使用不同的浏览器,在第一次获取时我得到了以下错误:
内网站点显示: {"readyState":4,"responseText":"{\r\n\"error\": {\r\n"code\": \"\", \"message\": {\r\n\"lang\": \"en-US\", \"value": \Type 'Microsoft.Sharepoint.DataService.ProjectlistItem' does not have a property named 'ID'. \"\r\n}\r\n}\r\r}","status": 400,"statusText":"error"}
刷新页面后数据会出现。似乎在第一次GET时,它找不到列表中的项目,但第二次GET后它就可以正常工作了。有什么建议吗?
getUrlVars()
函数放在document.ready
之外。 - Amit Soni