让我解释一下:我的目的是通过网络应用创建moodle用户。
我正在 Tomcat 8.0.15.0 上实现一个 Web 应用程序。也就是说,我在服务器端使用 java servlet。许多 JSP 文件和 javascript(其中大部分在 jQuery 中)驻留在客户端。
另一方面,在另一台服务器上,我有一个测试moodle安装。通过 site-administration> plugins> web services> external services,我创建了一个启用 core_user_create_users 功能的 ws。还创建了一个令牌来访问这个 ws,并将 admin 用户设置为授权用户。
然后,在 Chrome 上输入以下网址:
https://mysyte.com/webservice/rest/server.php?wstoken=780f8b3a1164163d4dc00a757071194e&wsfunction=core_user_create_users&moodlewsrestformat=json&users[0][username]=testuser&usr[ [email] =john@smith.com&users [0] [password] = XXXXXX
它奏效了。它返回了一个空白页,带有文本
[{"id": 1, "username": "testuser"}]
从而在moodle中创建一个用户。
我的问题是:我怎样才能从 java 中做到这一点?或者从 javascript 中做到这一点?或者更好地从 jQuery 中做到这一点。
如果不是,从 PHP 中,我想我可以从 java、javascript 或 jQuery 调用它。
我的错误提示:在我使用的应用程序的另一部分,在 javascript 中,成功调用了 $.getJSON()。这就是为什么我认为在这种情况下也会为我服务。但是现在没有成功,当 mozilla 调试器到达调用时,它挂起。
欢迎任何反馈。
调用看起来像
function create_moodle_user(username,firstname,lastname,email,password) {
var url = "https://mysyte.com/webservice/rest/server.php?"
+ "wstoken=780f8b3a1164163d4dc00a757071194e" + "&"
+ "wsfunction=core_user_create_users" + "&"
+ "moodlewsrestformat=json" + "&"
+ "users[0][username]=" + username + "&"
+ "users[0][firstname]=" + firstname + "&"
+ "users[0][lastname]=" + lastname + "&"
+ "users[0][email]=" + email + "&"
+ "users[0][password]=" + password;
$.getJSON(url, function(data) { // should return [{"id":4,"username":"testuser"}]
// this point is never reached
if (data.length < 64) {
}
else {
}
});
}
答案 0 :(得分:0)
最后,它通过更改调用和传递参数的方式起作用。
function create_moodle_user(u,f,l,e,fn) {
var domainname = 'https://my.moodle.site.com';
var data = {
wstoken: '780f8b3a1164163d4dc00a757071194e'
wsfunction: 'core_user_create_users'
moodlewsrestformat: 'json',
users: [
{
username:u,
password:'xxxxxxxx',
email:e,
firstname:f,
lastname:l
}
]
};
var response = $.ajax({
type: 'GET',
data: data,
url: domainname + '/webservice/rest/server.php'
});
// pass the function parameter
response.done(fn);
}
这奏效了!
我现在的问题是获取用户信息,因为我不知道如何从 core_user_get_users_by_field 获取响应。
这就是我所拥有的:
function get_moodle_user(u,fn) {
var domainname = 'https://my.moodle.site.com';
var data = {
wstoken: '780f8b3a1164163d4dc00a757071194e'
wsfunction: 'core_user_get_users_by_field'
moodlewsrestformat: 'json',
field: 'username',
username:u
};
var response = $.ajax({
type: 'GET',
data: data,
url: domainname + '/webservice/rest/server.php'
});
console.log(response); // this does not show the result data
// pass the function parameter
response.done(fn);
}
有什么想法吗?