當我訪問我在一天開始的特定頁面時,不會顯示任何數據。刷新同一頁後,數據顯示爲應該顯示。如果一小時後訪問同一頁面,數據仍將顯示。然而,第二天來,同樣會發生。我第一次訪問該頁面時沒有數據,但是在刷新之後。jquery腳本第一次不工作
有問題的頁面使用帶有ajax調用的jquery腳本。
該腳本本身用於Sharepoint 2010環境,並使用ListData.svc獲取數據(名稱,id,類型和soforth),並且獲取實際數據似乎不成問題(至少當我刷新)。
任何人都有一個想法,爲什麼會發生這種情況?
代碼:
<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>
更新: 按照該意見,我試着移動的document.ready外的函數getUrlVars(),這並沒有幫助。 不過,我想今天早上使用不同的瀏覽器,並在第一次提取我得到這個錯誤:
在內部網站上說: {「readyState的」 4「 responseText的」:「{\ r \ n \」錯誤\「:{\ r \ n」code \「: \」\「,\」message \「:{\ r \ n \」lang \「:\」en-US \「,\」value「: \ 'Microsoft.Sharepoint.DataService.ProjectlistItem'沒有名爲'ID'的屬性。 「:」error「}
刷新頁面並顯示數據。它看起來像在第一個GET,它無法找到列表中的項目,但在第二個GET後,它工作得很好。建議爲什麼這可能是?
儘量把'getUrlVars()函數''外document.ready' –
我的猜測是服務器出現在晚上睡覺,你喚醒,早上起來,但在第一次調用得到超時。你可以發佈什麼錯誤響應? –
感謝您的回覆。我明天早上才能得到錯誤答案,但是一旦我有了,我會在這裏發帖。我也會嘗試將getUrlVars()函數放在document.ready之外。 – user3463093