jquery脚本第一次不工作

时间:2014-06-15 12:25:09

标签: jquery ajax sharepoint sharepoint-2010

当我访问一天开始时的特定页面时,不会显示任何数据。刷新同一页面后,数据显示为应该显示。如果我在一小时后访问同一页面,数据仍将显示。但是,第二天来,同样会发生。我第一次访问页面时没有数据,但刷新后会出现。

有问题的页面使用带有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之外,这没有用。 但是,我今天早上尝试使用不同的浏览器,并在第一次获取时出现此错误:

内联网上的网站说: {&#34; readyState&#34;:4,&#34; responseText&#34;:&#34; {\ r \ n \&#34;错误\&#34;:{\ r \ n&#34;代码\&#34 ;: \&#34; \&#34;,\&#34;消息\&#34;:{\ r \ n \&#34; lang \&#34;:\&#34; en-US \& #34;,\&#34;值&#34;:\类型 &#39; Microsoft.Sharepoint.DataService.ProjectlistItem&#39;没有名为&#39; ID&#39;的房产。 \&#34; \ r \ N} \ r \ N} \ r \ R}&#34;&#34;状态&#34 ;: 400,&#34;状态文本&#34;:&#34;错误&#34;}

刷新页面并显示数据。看起来在第一次GET时,它无法在列表中找到项目,但在第二次GET之后,它可以正常工作。有什么建议可以吗?

1 个答案:

答案 0 :(得分:0)

SharePoint应用程序池每晚都会回收。因此,SharePoint网站上当天的第一次点击可能需要一些时间才能启动。有些人运行此PowerShell脚本以持续保持SP服务器处于活动状态。这应该可以解决您早上遇到的网络服务的滞后问题。

http://blogs.technet.com/b/praveenh/archive/2013/03/12/sfsgfasg.aspx