Я написал HTML-код, который вызывает Perl ajax-модуль и должен возвращать вывод JSON.Но вместо этого он возвращает весь программный код ajax.Пожалуйста, предложите причину
index.html кодов ниже:
<!DOCTYPE html>
<html>
<head>
<title>Testing ajax</title>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
var xhttp = false;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
$(document).ready(function() {
$("#test").click(function() {
var url = "./ajax.pl";
var data = '';
xhttp.open('POST', url, true);
xhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
if (xhttp.overrideMimeType) {
xhttp.overrideMimeType("application/json");
}
xhttp.send(data);
xhttp.onreadystatechange = function() {
alert("Inside function dispData()");
if (xhttp.readyState == 4 && xhttp.status == 200) {
var response = xhttp.responseText;
alert("response="+response);
}
};
});
});
</script>
</head>
<body>
<button id="test">Testing</button>
</body>
</html>
Perl Ajax код ajax.pl, как показано ниже:
#!/usr/bin/perl
use CGI;
use JSON::PP qw( encode_json );
my $cgi = CGI->new;
print $cgi->header('application/json;charset=UTF-8');
my @temp = {};
my $encoded_json={};
$temp[0]{'id'} = "123";
$encoded_json = encode_json(\@temp);
print $encoded_json;
Ожидаемый результат: В окне предупреждения => responseText = {['id': '123']}
Полученный результат: Получен весь код perl в окне предупреждения => responseText = #! / usr / bin / perl
использовать CGI;используйте JSON ::