【发布时间】:2015-08-24 16:47:18
【问题描述】:
我是 Javascript 新手,但不是编程新手。我正在尝试编写一个与服务器交换信息的程序。我无法让它工作,甚至简化和借用其他人的代码也无济于事。我做错了什么?
这里是客户端:
<!DOCTYPE html>
<html>
<head>
<title>Testing</title>
</head>
<body>
<script>
GET_JSON = function(callback) {
var req = new XMLHttpRequest();
req.open(POST, "http://www.skutan.com/cgi-bin/hvserver.cgi", true);
req.onreadystatechange = function() {
if (this.readyState == 4) {
callback(JSON.parse(req.responseText));
}
}
req.send("a=2&b=1");
}
JSONCallback = function(JSONObj) {
alert(JSONObj);
};
</script>
<button type="button" onclick="GET_JSON(JSONCallback)">Test</button>
<h1>.</h1>
<span id="koord"></span>
</body>
</html>
服务器是用 perl 编写的,看起来像这样:
#!/usr/bin/perl -wT
use strict;
use CGI qw(:standard);
my @fields = param;
my $json_ut = "{\"a\": 1, \"b\": 2}";
print("Content-type: application/json; charset=utf-8\n\n");
print("$json_ut");
为什么我在客户端没有收到任何警报?
【问题讨论】:
-
你必须解释问题是什么。 “我无法让它工作” 不是问题描述。请求是否已发送?服务器是否返回响应?是否调用了
onreadystatechange回调?你能解析响应吗?是否调用了回调?您必须自己进行一些调试。 -
非常感谢您的回答。我现在看到我从未检查过请求是否已发送。 /var/log/httpd/access_log 中没有提到服务器文件,所以我猜该请求从未发送过。为什么会这样?
-
@user3397176 -- 弹出控制台(在大多数浏览器上为 F12)- 单击按钮时查找错误。此外,控制台的“网络”选项卡会显示网络请求,请验证您的请求是否正在发送。
-
HTML 页面是否位于
http://www.skutan.com/?如果没有,它可能会作为跨站点请求被阻止。 -
谢谢 tymeJV。我必须了解有关控制台的更多信息。
标签: javascript ajax json perl