我想使用jquery从服务器上的perl脚本实现ajax响应。但是当我使用这样的代码时,我什么都没得到。我可以在浏览器中从url获取结果,所以我不知道哪里出错了。
$(document).ready(function(){
$("button").click(function(){
$.ajax({
'type': 'GET',
'url': 'http://XXXX/cgi-bin/XXX.pl?title=dd',
'async': true,
'success': function(data) {
alert(data);
}
});
});
});
答案 0 :(得分:2)
如果 url 字段包含http://server.domain/
,并且您尝试从位于 http://server.domain/ 之外的网页访问服务器(如在您的桌面上获取示例,可通过file:///
访问),您可能需要在perl CGI发送的标头中添加一个字段Access-control-allow-origin: *
:
#!/usr/bin/perl -w
use CGI;
my $q=new CGI;
print $q->header(-type=>"text/plain", -Access_Control_Allow_Origin=>"*")."Answer";
注意安全方面的考虑......
答案 1 :(得分:0)
尝试运行以下诊断:
$(document).ready(function(){
$("button").click(function(){
alert('click happened');
$.ajax({
'type': 'GET',
'url': 'http://XXXX/cgi-bin/XXX.pl?title=dd',
'async': true,
'success': function(data, textStatus, jqXHR) {
alert('ajax success: ' + [data, textStatus]);
},
'error': function(jqXHR, textStatus, errorThrown){
alert('ajax error: ' + [textStatus, errorThrown]);
}
});
});
});
在警报(或缺少警报)中的任何地方,你应该知道什么是失败的。