[英]Getting status code 0 in ajax call to cross site Perl CGI function
Perl CGI脚本被调用; 我可以看到调试日志正在获取参数并正在执行。
问题是返回结果,状态码始终为0,responseText为空。
尝试了各种标头选项等,但没有运气,任何帮助将不胜感激。
Perl CGI处理程序
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use JSON;
use Data::Dumper qw( Dumper );
my $q = new CGI;
my %data;
open my $FH, '>', 'outfile';
if ( my $number = $q->param('number') ){
if ( $number =~ /^\d+$/ ) {
$data{result} = $number % 2 ? 'odd' : 'even';
} else {
$data{result} = 'Not a number';
}
my $jret = to_json(\%data);
print $FH Dumper($jret);
close $FH;
print $q->header('application/json');
print to_json(\%data);
}
HTML代码
<!DOCTYPE html>
<html>
<head>
<title>[% title %]</title>
<meta charset='utf-8'>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"> </script>
</script>
</head>
<body>
<div id='result'></div>Enter number:
<form>
<input type='text' id='number'>
<button onclick='test_number();'>Test</button>
<script>
function test_number()
{
$.ajax({
type: 'POST',
dataType: 'json',
url: '/cgi-bin/simple.cgi',
data: {
'number': $('#number').val()
},
success: function(data, textStatus ){
alert('request successful');
},
error: function(jqXHR, exception) {
msg = 'Request Status: ' + jqXHR.status + ' Status Text: ' + jqXHR.statusText + ' ' + jqXHR.responseText;
alert(msg);
}
});
return false;
}
</script>
</form>
</body>
</html>
单击表单中的提交按钮时,将运行JavaScript函数。
这个:
为您的按钮元素使用type="button"
,因此它不是提交按钮
<form action="/cgi-bin/simple.cgi"
以便表单提交正确的位置 name="number"
添加到输入中,以便将其包含在常规表单数据中 onclick
属性,并使用JavaScript绑定适当的事件处理程序(如果JS成功运行,这将阻止表单提交的默认行为) 这样:
function test_number(event) {
event.preventDefault();
$.ajax({
type: 'POST',
dataType: 'json',
url: '/cgi-bin/simple.cgi',
data: {
'number': $('#number').val()
},
success: function(data, textStatus) {
alert('request successful');
},
error: function(jqXHR, exception) {
msg = 'Request Status: ' + jqXHR.status + ' Status Text: ' + jqXHR.statusText + ' ' + jqXHR.responseText;
alert(msg);
}
});
}
document.querySelector("form").addEventListener("submit", test_number);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.