- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 JSOM 查找特定列表中特定项目的特定字段中的值。总的来说,代码查找用户的组成员身份(使用 SPServices),然后使用该值来匹配列表中的项目(列表包含填充有组名称的“Title”字段和包含另一个字符串的“Portal”字段)并尝试从该列表项中提取不同的值。我收到的错误位于“var listItemEnumerator = this.listItems.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());
}
编辑:我已经更新了我的代码以反射(reflect)下面的更改,但现在我看到查询每次尝试都失败,总是路由到失败函数。这是代码,以防我在实现中做错了什么:
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
);
}
最佳答案
一些更正(错误发生可能是由于第三项):
var ctx = SP.ClientContext.get_current();//因为不需要新的构造函数
SP.ClientContext.executeQueryAsync
是异步方法ctx.executeQueryAsync(Function.createDelegate(this,
this.onQuerySucceeded(URL)), Function.createDelegate(this,
this.onQueryFailed));
到 ctx.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
自 SP.ClientContext 以来。 executeQueryAsync 接受回调函数我建议改用以下常见方法。它允许通过指定列表标题
和CAML查询
来加载列表项:
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
);
}
使用
从页面列表加载列表项并打印第一个:
getListItems('Pages','<View><Query/></View>',
function(items){
if(items.get_count() > 0) {
var firstItem = items.getItemAtIndex(0);
console.log(firstItem.get_item('Title'));
}
},
function(sender,args){
console.log(args.get_message());
}
);
在您的情况下,由于必须找到特定项目,因此可以使用以下示例:
getListItems('<List Title>','<Your query goes here>',
function(items){
if(items.get_count() === 1) { //Is item found?
var item = items.getItemAtIndex(0);
console.log(item.get_item('<Field Name>'));
}
},
function(sender,args){
console.log(args.get_message());
}
);
更新
查询中存在拼写错误,修正查询:
<View><Query><Where><Eq><FieldRef Name='Title'/><Value Type='Text'>" + userGroup + "</Value></Eq></Where></Query></View>
关于javascript - getEnumerator 失败并出现集合未初始化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26261909/
我是 Spring 新手,这就是我想要做的事情: 我正在使用一个基于 Maven 的库,它有自己的 Spring 上下文和 Autowiring 字段。 它的bean配置文件是src/test/res
我在我的测试脚本中有以下列表初始化: newSequenceCore=["ls", "ns", "*", "cm", "*", "ov", "ov", "ov", "ov", "kd"] (代表要在控
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Class construction with initial values 当我查看 http://en.
我得到了成员变量“objectCount”的限定错误。编译器还返回“ISO C++ 禁止非常量静态成员的类内初始化”。这是主类: #include #include "Tree.h" using n
我有如下所示的a.h class A { public: void doSomething()=0; }; 然后我有如下所示的b.h #include "a.h" class b: publi
我需要解析 Firebase DataSnapshot (一个 JSON 对象)转换成一个数据类,其属性包括 enum 和 list。所以我更喜欢通过传递 DataSnapshot 来手动解析它进入二
我使用 JQuery 一段时间了,我总是使用以下代码来初始化我的 javascript: $(document).ready( function() { // Initalisation logic
这里是 Objective-C 菜鸟。 为什么会这样: NSString *myString = [NSString alloc]; [myString initWithFormat:@"%f", s
我无法让核心数据支持的 NSArrayController 在我的代码中正常工作。下面是我的代码: pageArrayController = [[NSArrayController alloc] i
我对这一切都很陌生,并且无法将其安装到我的后端代码中。它去哪里?在我的页脚下面有我所有的 JS? 比如,这是什么意思: Popup initialization code should be exec
这可能是一个简单的问题,但是嘿,我是初学者。 所以我创建了一个程序来计算一些东西,它目前正在控制台中运行。我决定向其中添加一个用户界面,因此我使用 NetBeans IDE 中的内置功能创建了一个 J
我有 2 个 Controller ,TEST1Controller 和 TEST2Controller 在TEST2Controller中,我有一个initialize()函数设置属性值。 如果我尝
据我所知, dependentObservable 在声明时会进行计算。但如果某些值尚不存在怎么办? 例如: var viewModel ={}; var dependentObservable1 =
我正在阅读 POODR 这本书,它使用旧语法进行默认值初始化。我想用新语法实现相同的功能。 class Gear attr_reader :chainring, :cog, :wheel de
我按照 polymer 教程的说明进行操作: https://www.polymer-project.org/3.0/start/install-3-0 (我跳过了可选部分) 但是,在我执行命令“po
很抱歉问到一个非常新手的Kotlin问题,但是我正在努力理解与构造函数和初始化有关的一些东西。 我有这个类和构造函数: class TestCaseBuilder constructor(
假设我们有一个包含 30 列和 30 行的网格。 生命游戏规则简而言之: 一个小区有八个相邻小区 当一个细胞拥有三个存活的相邻细胞时,该细胞就会存活 如果一个细胞恰好有两个或三个活的相邻细胞,那么它就
我是 MQTT 和 Android 开放附件“AOA” 的新手。在阅读教程时,我意识到,在尝试写入 ByteArrayOutputStream 类型的变量之前,应该写入 0 或 0x00首先到该变量。
我有 2 个 Controller ,TEST1Controller 和 TEST2Controller 在TEST2Controller中,我有一个initialize()函数设置属性值。 如果我尝
我有一个inotify /内核问题。我正在使用“inotify” Python项目进行观察,但是,我的问题仍然是固有的关于inotify内核实现的核心。 Python inotify项目处理递归ino
我是一名优秀的程序员,十分优秀!