2014-06-15 120 views
4

當我訪問我在一天開始的特定頁面時,不會顯示任何數據。刷新同一頁後,數據顯示爲應該顯示。如果一小時後訪問同一頁面,數據仍將顯示。然而,第二天來,同樣會發生。我第一次訪問該頁面時沒有數據,但是在刷新之後。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後,它工作得很好。建議爲什麼這可能是?

+0

儘量把'getUrlVars()函數''外document.ready' –

+0

我的猜測是服務器出現在晚上睡覺,你喚醒,早上起來,但在第一次調用得到超時。你可以發佈什麼錯誤響應? –

+0

感謝您的回覆。我明天早上才能得到錯誤答案,但是一旦我有了,我會在這裏發帖。我也會嘗試將getUrlVars()函數放在document.ready之外。 – user3463093

回答