1
我正在使用JSOM在特定列表中特定項目的特定字段中查找值。總的來說,代碼查找用戶的組成員資格(使用SPServices),然後使用該值來匹配列表中的項目(列表包含填充組名稱的「標題」字段和包含另一字符串的「門戶」字段)並嘗試從該列表項拉取不同的值。我得到的錯誤是'var listItemEnumerator = this.listItems.getEnumerator();'。錯誤是「收集尚未初始化,尚未請求收集或請求尚未執行,可能需要明確請求。」getEnumerator失敗,集合未初始化錯誤
下面是代碼:
function getPortalURL(userGroup) {
var URL = "";
var ctx = new SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getByTitle('Clients');
var query = "<View><Query><Where><Eq><FieldRef Name='Title'><Value Type='Text'>" + userGroup + "</Value></Eq></Where></Query></View>";
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml(query);
this.listItems = list.getItems(camlQuery);
ctx.load(this.listItems);
ctx.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded(URL)), Function.createDelegate(this, this.onQueryFailed));
return URL;
}
function onQuerySucceeded(URL) {
var listItemEnumerator = this.listItems.getEnumerator();
while (listItemEnumerator.moveNext()) {
var currentItem = listItemEnumerator.get_current();
URL = currentItem.get_item('Portal');
}
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
編輯: 我已經更新了我的代碼,以反映下面的變化,但現在我看到查詢失敗的每次嘗試,始終路由到故障的功能。下面是情況下,代碼我做錯了什麼事在我的實現:
function getPortalURL(userGroup) {
var query = "<View><Query><Where><Eq><FieldRef Name='Title'><Value Type='Text'>" + userGroup + "</Value></Eq></Where></Query></View>";
getListItems('Clients', query,
function(items) {
if(items.get_count() === 1) {
var item = items.getItemAtIndex(0);
alert(item.get_item('Portal'));
}
},
function(sender,args){
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
);
}
function getListItems(listTitle, queryText, success, error) {
var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var list = web.get_lists().getByTitle(listTitle);
var query = new SP.CamlQuery();
query.set_viewXml(queryText);
var items = list.getItems(query);
ctx.load(items);
ctx.executeQueryAsync(
function() {
success(items);
},
error
);
}
感謝您的建議。我試圖實現這一點,但現在我的查詢路由到失敗函數的每一次嘗試。我編輯我的OP來添加新的代碼(在註釋中沒有足夠的空間),以防我在實現中做了錯誤。 – 2014-10-08 20:02:17
您的更新版本看起來好得多,這個錯誤發生是由於查詢中的錯字,請參閱更新的答案:) – 2014-10-08 20:50:17
我發誓,至少90%的編碼錯誤是拼寫錯誤。非常感謝你的幫助。 (會投票,但我沒有足夠的聲譽。) – 2014-10-08 23:44:52