从 executeQueryAsync, javascript 中检索参数
retrieve parameter from executeQueryAsync, javascript
我正在尝试从调用的成功方法中检索参数,并使用Javascript ECMA脚本执行QueryAsync。
我在这里尝试
过这个建议http://www.learningsharepoint.com/2013/08/07/passing-parameters-to-success-method-in-executequeryasync-sharepoint/
但我在MicrosfotAjax.js文件中收到以下错误:
"集合尚未初始化。尚未请求或请求尚未执行。可能需要明确请求_returnParam。命令,我得到一个未定义的值,而它应该说"你好"。我想在获得返回 listItemInfo 数组的成功函数之前演示一个简单的变量返回。
感谢您的考虑
function Tblsrch(camlstr){
var siteUrl = '/sites/SIandT%20Project%20Intelligence';
var hello;
var clientContext = new SP.ClientContext(siteUrl);
var oWebsite = clientContext.get_web();
var oList = oWebsite.get_lists().getByTitle('ISATestdata');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml(camlstr);
this.collListItem = oList.getItems(camlQuery);
var _returnParam;
clientContext.executeQueryAsync(Function.createDelegate(this, function(){_returnParam = onQuerySucceeded();}), Function.createDelegate(this, this.onQueryFailed));
alert(_returnParam);
}
function onQuerySucceeded(sender, args){
var listItemInfo = new Array();
var rowInd = 0;
var hello;
var listItemEnumerator = collListItem.getEnumerator();
while (listItemEnumerator.moveNext()) {
var oListItem = listItemEnumerator.get_current();
// listItemInfo += ''nType:' + oListItem.get_item('Name2') + ' | ' + oListItem.get_item('Plan') + ' | ' + oListItem.get_item('Type1');
listItemInfo[rowInd] = new Array(10);
listItemInfo[rowInd][0] =oListItem.get_item('Name2');
listItemInfo[rowInd][1] =oListItem.get_item('Type1');
listItemInfo[rowInd][2] = oListItem.get_item('Plan');
listItemInfo[rowInd][3] = oListItem.get_item('Analyse');
listItemInfo[rowInd][4] = oListItem.get_item('Design');
listItemInfo[rowInd][5] = oListItem.get_item('Build');
listItemInfo[rowInd][6] = oListItem.get_item('Test');
listItemInfo[rowInd][7] = oListItem.get_item('Run');
listItemInfo[rowInd][8] = oListItem.get_item('SupportMaintenance');
listItemInfo[rowInd][9] = oListItem.get_item('Link1');
listItemInfo[rowInd][10] = oListItem.get_item('Link2');
rowInd++;
}
alert(listItemInfo[0][0] + " " + listItemInfo[0][1] + " " +listItemInfo[0][2] + " " + listItemInfo[0][3] + " " +listItemInfo[0][4] + " " );
var _returnParam = "hello";
return _returnParam;
}
function onQueryFailed(sender, args){
alert('Request failed. ' + args.get_message() + ''n' + args.get_stackTrace());
}
clientContext.executeQueryAsync(Function.createDelegate(this, function(){_returnParam = onQuerySucceeded();}), Function.createDelegate(this, this.onQueryFailed));
alert(_returnParam);
这很正常。 executeQueryAsync
是异步的,所以调用executeQueryAsync
(= 完成 AJAX 请求),紧接着,无需等待 AJAX 完成,您就使用仍然无效的_returnParam调用alert(_returnParam)
。
执行另一个操作,则需要在onQuerySucceeded
结束时调用另一个函数。
顺便说一句,我一直认为Microsoft方式真的很难使用。如果您有兴趣,我创建了一个库来处理Sharepoint(它称为SharepointPlus)。对于您想要实现的目标,代码将是这样的(我也用数组审查了您的代码):
$SP().list("ISATestdata", "/sites/SIandT%20Project%20Intelligence").get({fields:"Name2,Type1,Plan,Analyse,Design,Build,Test,Run,SupportMaintenance,Link1,Link2",where:"Name2 = 'Something'"}, function(data) {
var listItemInfo = [];
for (var i=0, len=data.length; i<len; i++) {
listItemInfo[i] = [];
listItemInfo[i].push(data[i].getAttribute("Name2"));
listItemInfo[i].push(data[i].getAttribute("Type1"));
listItemInfo[i].push(data[i].getAttribute("Plan"));
listItemInfo[i].push(data[i].getAttribute("Analyse"));
listItemInfo[i].push(data[i].getAttribute("Design"));
listItemInfo[i].push(data[i].getAttribute("Build"));
listItemInfo[i].push(data[i].getAttribute("Test"));
listItemInfo[i].push(data[i].getAttribute("Run"));
listItemInfo[i].push(data[i].getAttribute("SupportMaintenance"));
listItemInfo[i].push(data[i].getAttribute("Link1"));
listItemInfo[i].push(data[i].getAttribute("Link2"));
}
alert(listItemInfo[0][0] + " " + listItemInfo[0][1] + " " +listItemInfo[0][2] + " " + listItemInfo[0][3] + " " +listItemInfo[0][4] + " " );
})
相关文章:
- 如何检索restangular参数的异步值
- 如何在 html 链接中发送参数以及如何检索它
- 从字符串中检索自定义参数的值
- 如何检索其属性为给定参数的子字符串的所有文档
- Worklight Javascript适配器:无法检索作为参数传递给适配器的数组值
- 通过 jQuery 从 href 参数检索值
- JQuery:参数:硬编码字符串与 ajax 检索到的字符串
- 如何在 angularjs 中存储和检索搜索参数
- Html列表:如何计算列表中检索到的参数数
- 防止单击和检索函数调用的参数
- 从隐藏的网址中检索参数
- 分析字符串以检索参数
- 检索通过 JQuery .load() 发送的 URL 参数
- 从 executeQueryAsync, javascript 中检索参数
- 从具有特定参数的数组中检索对象
- 从 javascript 中的 URL 检索 ID 参数
- JavaScript:使用函数参数检索 JavaScript 对象键
- 在JavaScript中检索函数参数的名称
- Javascript -如何“请求查询字符串”从Url.检索参数值的操作链接
- 无法从JSP页面检索参数的值