Я написал сценарий, который обновляет поле в списке SharePoint, которое работает, но когда я удаляю предупреждение («test»); линия перестает работать. Вот мой код: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()' is 'Async'. '.update()' должен быть в функции обратного вызова, которую вы передаете. Вот почему есть обратный вызов. ;-) –
... Любой код, который полагается на ответ от 'executeQueryAsync()', должен быть вызван из функции обратного вызова, которую вы передаете. 'Alert()' заставляет его работать, потому что он блокирует '.update()' достаточно долго для ответа на возврат. –
У меня нет большого опыта работы с JavaScript, можете ли вы объяснить мне, как я это делаю? Спасибо! – Kate