2017-03-21 82 views
0

早上,所有的REST GET方法

我是新來的休息,我想要做的就是證明我可以得到一個獲得在SharePoint列表中的排序列(Exchange_x0020),但我不確定我是否以正確的格式爲API提供了正確的信息,在Visual Studio代碼中我得到了很多扭曲的紅色!下面的代碼:

function getListItemById(/sites/it/Tools/IT-Contracts/Lists/IT% 
20Contracts/AllItems.aspx, Currency Exchange Rates, Exchange_x0020, 
success, failure) { 
    var url = webUrl + "/_vti_bin/listdata.svc/" + "Currency Exchange Rate + "(" +Exchange_x0020 + ")"; 
    $.ajax({ 
     url: url, 
     method: "GET", 
     headers: { "Accept": "application/json; odata=verbose" }, 
     success: function (data) { 
      success(data.d); 
     }, 
     error: function (data) { 
     failure(data.responseJSON.error); 
    } 
    }); 
} 




    //Usage 

getListItemById(/sites/it/Tools/IT-Contracts/Lists/CurrencyExchangeRates/AllItems.aspx,'Tasks',2,function(taskItem){ 
console.log(taskItem.TaskName); 
}, 
function(error){ 
    console.log(JSON.stringify(error)); 
} 

回答

0

一般JavaScript語法問題

在你的函數定義,你就需要更加小心你的參數名稱。

你現在有什麼:

function getListItemById(/sites/it/Tools/IT-Contracts/Lists/IT%20Contracts/AllItems.aspx, 
    Currency Exchange Rates, Exchange_x0020, success, failure) 

各參數應該是有效的命名變量。斜槓,空格,減號和百分號在變量名中無效。

什麼更有意義:

function getListItemById(webUrl, listName, columnName, success, failure) 

那麼函數的第一行需要進行更新,以採用新的參數名:

var url = webUrl + "/_vti_bin/listdata.svc/" + listName + "(" + columnName + ")"; 

你也應該小心引號圍繞你的函數體內的變量名稱。您的listName變量不應該有前面的引號(您的代碼目前表示爲+ "Currency Exchange Rate +)。

使用SharePoint REST Web服務

要和排序特定列檢索列表中的項目,使用$orderby參數。

"/_vti_bin/ListData.svc/CurrencyExchangeRates?$orderby=ExchangeRate" 

請注意,2010 REST Web服務使用刪除空格的列表標題和列顯示名稱,如上例所示。 2013 REST Web服務允許您使用實際列表標題或列表的GUID。

"/_api/web/lists/getbytitle('" + listName + "')/items?$orderby=ExchangeRate" 

有關更多詳細信息,請參閱SharePoint 2010 REST Interface MSDN Documentation

+0

謝謝!對!所以請原諒我的愚蠢,但在函數getListItem我實際上不需要把URL,listName等?下面我現在得到的,它不是在控制檯中返回成功或失敗,但我認爲我更接近... – Dazza

+0

function getListItemById(webUrl,listName,itemID,success,failure){ var url = webUrl +「/ _vti_bin/ListData.svc/CurrencyExchangeRates?$ orderby = ExchangeRate「(」+ Exchange_x0020 +「)」; $ .ajax({url_ url,url,// +「/ sites/it/Tools/IT-Contracts/IT%20Contracts/AllItems.aspx('+ Currency Exchange Rates +')/ items(「+ Exchange_x0020 +」), 方法:「GET」, 標題:{「Accept」:「application/json; odata = verbose」 }, – Dazza

+0

@Dazza測試您的URL是否正確構建的一個好方法是直接在瀏覽器中瀏覽它,如果URL有效,Internet Explorer會將其顯示爲feed,如果無效,您將得到400錯誤的請求(頁面未找到)。[網址]/_ vti_bi N/ListData.svc/LISTTITLE?$ orderby = ColumnDisplayName'用你的列表標題替換ListTitle(刪除空格)並將ColumnDisplayName替換爲列的顯示名稱(刪除空格)。你不應該在URL中需要任何括號。 – Thriggle