Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery无法从perl获取响应_Jquery_Ajax_Perl - Fatal编程技术网

jquery无法从perl获取响应

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

我想使用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);
  }
});

});
});

尝试运行以下诊断程序:

$(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。