谁能告诉我我做错了什么?我正在创建一个简单的系统来让人们进出用户组,为此我正在使用 Dojo 和 Perl。(如果我能以我的方式拥有它,那就是 PHP,但我不是老板。)
目前我只使用三个文件,一个用于 Perl,一个用于 JavaScript,一个用于 CSS 样式。
CGI 脚本的开头路由到不同的函数,如下所示:
if ($search = $cgi->param('psearch')) {
dbConnect();
jsonSearchPersons($search);
dbDisconnect();
} elsif ($user_id = $cgi->param('person')){
dbConnect();
create_form($user_id);
dbDisconnect();
} elsif ($user_id = $cgi->param('saveuser')) {
save_user();
} else {
mainPage();
};
...
sub save_user {
print $cgi->header(-type=>'text/plain',-charset=>'utf-8');
print("success");
}
我现在遇到的问题是,当我想通过 Ajax 调用(对这个 URL 的调用:)为用户保存新组时users.cgi?saveuser=xx
。这应该(在我看来)是一个 POST 调用,所以我做了这个并尝试将生成的 HTML/文本附加到 a<div>
但它不起作用:
dojo.xhr.post({
url: "/cgi-bin/users.cgi?saveuser="+user_id,
content: {
new_groups: group_ids.toString()
},
load: function(html_content){
var element = document.getElementById("test_area");
element.innerHTML = html_content;
},
error: function(){
alert("An error has occured during the save of new user groups.");
}
});
当我使用dojo.xhr.get();
它时工作正常,但是当我使用POST时,它就像它跳过了 if 语句的那一部分并只是附加了mainPage()
函数。Dojo 和 Perl 之间有什么我不理解的基本内容吗?我是否必须设置页面才能接受 POST 调用?或者我做错了什么?
注意:这是我通过 Dojo 和 Perl 制作的第一个“系统”。(我通常是一个 PHP/jQuery 类型的人,他手工制作所有 UI,所以我对它有点陌生。)