我在SharePoint网站的“隐藏脚本编辑器” Web部件内实现了Ajax调用。
但是我的ajax
函数似乎无法从InsertAuditLog
调用Web Service
方法。
我可以访问Web Service
并使用Invoke
按钮测试操作,并且记录已成功插入数据库。
<script type="text/javascript">
ExecuteOrDelayUntilScriptLoaded(getCurrentUser, "sp.js");
var currentUser;
function getCurrentUser(){
var ctx= new SP.ClientContext.get_current();
var web = ctx.get_web();
currentUser = web.get_currentUser();
ctx.load(currentUser);
ctx.executeQueryAsync(onSuccess, onFailure);
}
function onSuccess() {
alert(currentUser.get_title()); //displayed correctly
document.getElementById('userLogin').value = currentUser.get_title();
}
function onFailure() {
alert('request failed' + args.get_message() + '\n' + args.get_stackTrace());
}
function getClickURL(url){
alert(url); //displayed correctly
var loginName = document.getElementById('userLogin').value;
var extension = ['pdf', 'xls', 'xlsx', 'doc', 'docx', 'ppt', 'pptx', 'txt', 'jpg', 'jpeg', 'gif', 'png'];
var filename = url.split('/').pop().replace('%20',' ');
var ext = filename.split('.').pop().toLowerCase();
if (extension.indexOf(ext) >= 0) {
alert(filename + " " + loginName); //displayed correctly
InsertLog(filename, loginName, url);
}
}
function InsertLog(filename, loginName, link) {
alert(filename + loginName); <============ //Last displayed alert box
$.ajax({
type: "POST",
url: "http://sp2016.s1.com:8888/S1WebServices.asmx/InsertAuditLog",
data: '{ sFilename : "' + filename + '", sUserName : "' + loginName + '", sLink : "' + link + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data.d); //not displayed
},
error: function (objXMLHttpRequest, textStatus, errorThrown) {
alert(data.d); //not displayed
}
});
}
</script>
<input id="userLogin" name="userLogin" type="hidden">
有什么方法可以解决此问题?