jquery无法从perl获取响应
我想使用jquery在服务器上实现来自perl脚本的ajax响应,但是当我使用这样的代码时,我什么也得不到。我可以从浏览器中的url获得结果,所以我不知道哪里出错了jquery无法从perl获取响应,jquery,ajax,perl,Jquery,Ajax,Perl,我想使用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': fu
$(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);
}
});
});
});
尝试运行以下诊断程序:
$(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]);
}
});
});
});
在警报(或缺少警报)中的某个地方,您应该了解失败的原因。如果url字段包含http://server.domain/
如果您试图从位于其他位置的网页访问服务器http://server.domain/ (就像您的桌面上的示例一样,通过文件://
访问),您可能需要在perl CGI发送的标题中添加一个字段访问控制允许来源:
:
#!/usr/bin/perl -w
use CGI;
my $q=new CGI;
print $q->header(-type=>"text/plain", -Access_Control_Allow_Origin=>"*")."Answer";
注意安全注意事项…$(“按钮”)您是指所有按钮元素在单击时都具有此功能,还是指类似$(“#按钮”)?如果您使用Chrome的开发人员工具-网络面板,您可以准确查看发出的ajax请求以及响应,它显示“ajax错误:错误”。当我将async更改为false时,它会显示“[Exception…”Failure”nsresult:“0x80004005(NS_ERROR_Failure)”位置:“JS frame::::line 8416“data:no]”是因为我从perl返回的是一个带有表的html页面吗?最终,您需要的是一个html片段(例如仅是表)而不是整个页面。但这并不能解释为什么现在会出现ajax错误。最可能的原因是您试图查询与当前页面不同的域(即跨域请求)。如果是这样,那么您可能希望尝试允许跨域GET请求的声明。绝对保持
异步:false
-某些浏览器不支持true。