Получение json с сервера и присвоение его переменной

0

Я новичок в 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");

Почему я не получаю предупреждения в клиенте?

  • 4
    Вы должны объяснить, в чем проблема. «Я не могу заставить его работать» не является описанием проблемы. Запрос отправлен? Сервер возвращает ответ? onreadystatechange обратный вызов onreadystatechange ? Вы можете разобрать ответ? Называется обратный вызов? Вы должны немного отладить себя.
  • 0
    Большое спасибо за ваш ответ. Теперь я вижу, что никогда не проверял, был ли отправлен запрос. Файл сервера не упоминается в / var / log / httpd / access_log, поэтому я полагаю, что запрос не был отправлен. Почему это может быть?
Показать ещё 3 комментария
Теги:

1 ответ

0
Лучший ответ

Если вы проверили консоль броузера, вы увидите ошибку, такую как

ReferenceError: POST is not defined

со ссылкой на линию

req.open(POST, "http://www.skutan.com/cgi-bin/hvserver.cgi", true);

Должен быть

req.open("POST", "http://www.skutan.com/cgi-bin/hvserver.cgi", true);
  • 0
    Спасибо. Это действительно сработало после предложенной вами модификации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню