我寫了一個腳本,更新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