我写了一个脚本,更新SharePoint列表中的一个字段的工作,但当我删除警报(“测试”);线停止工作。这里是我的代码:JavaScript使用警报,不工作没有
<script type="text/javascript">
$(document).ready(function() { ExecuteOrDelayUntilScriptLoaded(loadConstants, "sp.js"); });
function loadConstants() {
var userid= _spPageContextInfo.userId;
var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userid + ")";
var requestHeaders = { "accept" : "application/json;odata=verbose" };
$.ajax({
url : requestUri,
contentType : "application/json;odata=verbose",
headers : requestHeaders,
success : onSuccess,
error : onError
});
function onSuccess(data, request){
var loginName = data.d.Title;
var ctx = new SP.ClientContext("site name");
var oList = ctx.get_web().get_lists().getByTitle('list name');
this.oListItem = oList.getItemById(1);
ctx.load(this.oListItem);
ctx.executeQueryAsync(Function.createDelegate(this, function() {
this.oListItem.set_item('Read', loginName + ' ' + getTodayDate(););
}), function (sender, args) { alert('Error occured' + args.get_message());});
//HERE IS THE ALERT:
//alert("test");
this.oListItem.update();
ctx.executeQueryAsync(
Function.createDelegate(this, this.onQuerySucceeded),
Function.createDelegate(this, this.onQueryFailed)
);
}
function onError(error) {
alert("error");
}
function getTodayDate() {
//code that gets today's date
return today;
}
}
</script>
在此先感谢您对此问题的任何帮助!
'executeQueryAsync()'的关键部分是'Async'。 '.update()'需要在你传递的回调函数中。这就是回调的原因。 ;-) –
...依赖于来自'executeQueryAsync()'的响应的任何代码需要在您传递的回调函数中调用。 'alert()'使它工作,因为它阻塞了'.update()'足够长的时间来响应返回。 –
我对JavaScript没有太多的经验,你能向我解释我是怎么做到的吗?谢谢! – Kate