0
我是JavaScript新手,但沒有編程。我正在嘗試編寫一個與服務器交換信息的程序。我無法實現它,甚至簡化和借用其他人的代碼也無濟於事。我做錯了什麼?從服務器獲取json並將其分配給變量
下面是客戶端:
<!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
@ user3397176 - 打開控制檯(大多數瀏覽器上的F12) - 單擊按鈕時查找錯誤。另外,控制檯的「網絡」選項卡顯示網絡請求,驗證您的信息是否正在發送。 – tymeJV