【问题标题】:Javascript query not returning results from query to SharePoint listJavascript 查询未将查询结果返回到 SharePoint 列表
【发布时间】:2017-05-30 09:42:07
【问题描述】:

我正在尝试使用 JavaScript 查询和 json 将 SharePoint 列表的内容返回到 HTML 页面。

这两个 SharePoint 列称为 Title 和 IssueID,分别是 Single line 和 Number 列。我需要它将它返回到 HTML 中的表格单元格''。我附上了 Firefox 调试器的屏幕截图,但我不知道它指向哪里? Debugger

JavaScript:

function getDeviceKnownIssues() {

var txtTitle = "";


var query = "http://collaboration-dev.norgine.com/sites/it/SystemInventory/_vti_bin/listdata.svc/Knownissues?$select=IssueID,Title"; 

var call = $.ajax({
        url: query,
        type: "GET",
        dataType: "json",
        headers: {
            Accept: "application/json;odata=verbose"
        }       
    });
call.done(function (data,textStatus, jqXHR){
$.each(data.d.results, function(index, item) {

        var tempID = result.Id;
        var tempTitle = result.Title;
        txtTitle = txtTitle + "<p><a href='/sites/it/SystemInventory/SitePages/Service%20Catalogue.aspx?did=" + tempID + "'>" + tempTitle + "</a></p>";
        //txtStatus = "<p>" + StatusType  + "</p>";
    });
   $('#knowntitle').append($(txtTitle));
   //$('#servivestatus').append(txtStatus);

});
call.fail(function (jqXHR,textStatus,errorThrown){
    alert("Error retrieving data: " + jqXHR.responseText);
});

}

HTML

<html xmlns:mso="urn:schemas-microsoft-com:office:office"      
xmlns:msdt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"><head>

<script src="/jquery-1.10.1.min.js"></script>

<script src="/it/SystemInventory/SiteAssets/scripts/moment.min.js"></script>
<script src="/sites/it/SystemInventory/SiteAssets/getDevices.js"></script>
<script  
src="/sites/it/SystemInventory/SiteAssets/getDeviceDetails.js"></script>

 <script 
src="/sites/it/SystemInventory/SiteAssets/getDeviceKnownIssues.js"></script>

<script type="text/javascript">

function parseQueryString(queryString)
{
var params = {}, queries, temp, i, l;
queries = queryString.split("&");
for ( i = 0, l = queries.length; i < l; i++ ) {
    temp = queries[i].split('=');
    params[temp[0]] = temp[1];
 }
return params;
}

$(document).ready(function(){
function getDeviceID() {
    if(typeof parseQueryString === "function") {
        if(window.location.href.indexOf("?") >= 0) {
            var qs = parseQueryString(window.location.href.split("?")[1])
            window.DeviceId = qs.did;
            getDeviceDetails();
            getDeviceKnownIssues();
        }
    }
}
getDeviceID();
getDevices();

 });


</script>
</head>
<style type="text/css">
.tg  {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-    style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg .tg-yw4l{vertical-align:top}
</style>
<table class="tg">
<tr>
 <td class="tg-yw4l">
    <h1>Devices</h1>
    <div id="devices">
    </div>
    </td>
    <td class="tg-yw4l">
    <h1>Device Details</h1>
    <div id="devicedetails">
    </div>
   </td>
   <td class="tg-yw4l">
<h1>Device Overview</h1> 
    <div id="deviceoverview">
     <div id="devicekind">   
    </div>
  </td>
  </tr>


</table>

<table class="tg">
  <tr>
    <td class="tg-yw4l">
    <h1>Accessories</h1>
    <div id="deviceacc">

    </div>
    </td>
    <td class="tg-yw4l">
    <h1>Typical Usage</h1>

    <div id="deviceuse">
    </div>
    </td>
<td class="tg-yw4l">
<h1>Spare Cell</h1> 
    <div id=" ">



    </div>
</td>
</tr>




</table>
Known Issues
<table class="tg">
  <tr>
   <td class="tg-yw4l">
     <h1>Title</h1>
    <div id="knowntitle">

    </div>
</td>
<td class="tg-yw4l">
    <h1>Service Status</h1>

    <div id="servivestatus">
    </div>
</td>
<td class="tg-yw4l">
<h1>Device Type</h1> 
    <div id=" ">



    </div>
</td>
  </tr>




</table>

【问题讨论】:

  • 我刚刚意识到我不需要 txtTitle = txtTitle + "

    " + tempTitle + "

    ";行作为早期文件正在构建该页面,所以我只需要 txtTitle = "

    + KnownTitle + "

    ";但它仍然没有出现......?

标签: javascript mysql json sharepoint sharepoint-2010


【解决方案1】:

用下面的代码替换你的 call.done 方法,

call.done(function (data,textStatus, jqXHR){
 var result = data.d.results;
$.each(result , function(index, item) {

        var tempID = result.Id;
        var tempTitle = result.Title;
        txtTitle = txtTitle + "<p><a href='/sites/it/SystemInventory/SitePages/Service%20Catalogue.aspx?did=" + tempID + "'>" + tempTitle + "</a></p>";
        //txtStatus = "<p>" + StatusType  + "</p>";
    });
   $('#knowntitle').append($(txtTitle));
   //$('#servivestatus').append(txtStatus);

});

【讨论】:

  • 通过替换它,您的结果相关错误将得到解决,并确保您拥有正确的 HTML,因为控制台中与父元素相关的错误与之相关。所以再次验证您的 Html。
  • 我更换了调用方法,结果还是不显示,在调试器中得到如下信息:
  • 未捕获的 ReferenceError:getDeviceKnownIssues 未在 HTMLDocument 的 getDeviceID (Service%20Catalogue.aspx:878) 处定义。 (Service%20Catalogue.aspx:882) 在 j (jquery-1.11.0. min.js:2) 在 Object.fireWith [as resolveWith] (jquery-1.11.0.min.js:2) 在 Function.ready (jquery-1.11.0.min.js:2) 在 HTMLDocument.K (jquery -1.11.0.min.js:2)
  • 值得一提的是,我还使用另一个 JavaScript 文件来获取其他结果。修改后的 call.done 方法取消了该文件返回的一些结果。
  • 此错误也与未定义的变量有关,请确保您在 js 文件中没有未定义的变量。因为我在这里更新了结果,声明您必须对其他变量执行相同的操作。或者您可以阅读一些关于 javascript 的文章。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
  • 2016-11-16
  • 2013-10-01
  • 1970-01-01
相关资源
最近更新 更多