Показать ответ Webdis в браузере - PullRequest
0 голосов
/ 03 февраля 2012

Я пытаюсь отобразить данные Redis в браузере, используя Webdis и jQuery. Redis и Webdis работают правильно из командной строки (используя curl), но я не могу получить данные для отображения в браузере. Webdis отвечает JSON, и ответ curl: {"GET": "103"} . Кто-нибудь знает проблему? Предложения по улучшению всего этого приветствуются. Спасибо!

Код ниже:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <!-- load JQuery from Google API -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
    </script>

    <!-- This is the jQuery template for the JSON returned by Webdis -->
<script id="webdisTemplate" type="text/x-jquery-tmpl">
        <li>${GET}</li>

</script>

<!-- jQuery Ajax request through Webdis that feeds the Redis data into the template -->
    <script type="text/javascript">
    $(document).ready(function()
    {
        $.ajax({
            url: "http://127.0.0.1:7379/GET/value",
            data: "format=json",
            dataType: "json",
            success: function(data)
            {
                $("#webdisTemplate").tmpl(data.items).appendTo("#placeholder");
            }
        });
    });
    </script>
<title>Webdis Test</title>
</head>
<body>
    <h4>Value:</h4>
    <ul id="placeholder"></ul>
</body>
</html>

Ответы [ 3 ]

1 голос
/ 07 мая 2012

Ответ немного запоздал, но я думаю, что это может быть полезно для других людей.Я использовал две машины, поэтому, если возникла какая-либо проблема с CORS, она должна была возникнуть, но у меня не было никаких проблем с ней.Мой фрагмент кода показывает, как получить данные через $ .ajax, если вы все еще сталкиваетесь с проблемой, дайте мне знать, чтобы расширить ответ.

В вашем коде js:

var key = 123;

$.ajax({
  url: "http://example.com:7379",
  data: "GET/" + key,
  type: 'POST',
  success: function(data) { 
    $("outputArea").html(data.GET);
  },
  error: function(err) {
    console.log("error", err);
  });

$("#outputArea").html(data.GET);

Надеюсь, что этопомог!

0 голосов
/ 03 февраля 2012

Я автор Webdis.Я уверен, что @bmargulies прав, это похоже на проблему с CORS.В Webdis есть заголовок Access-Control-Allow-Origin, но этого может быть недостаточно.

Я открыл тикет в проекте github, чтобы отслеживать эту проблему .Я посмотрю на это сегодня.

Ура,

Николас

(редактировать)

Запрос действительно работаетхорошо, даже если выполняется для отдельного домена.Webdis включает в себя заголовки CORS, а именно Access-Control-Allow-Origin: * и Allow: GET,POST,PUT,OPTIONS.

Тем не менее, строка шаблона для меня не работает:

$("#webdisTemplate").tmpl(data.items).appendTo("#placeholder");

Я получаю следующее сообщение об ошибке в Chromeconsole:

Uncaught TypeError: Object [object Object] has no method 'tmpl'

Если я использую console.log для печати data, я вижу ожидаемый объект ответа.

Я могу подтвердить, что он работает как в Chromium 15, так и в Firefox.8.

0 голосов
/ 03 февраля 2012

Ответ на этот вопрос не для того, чтобы кто-то здесь угадал проблему, читая ваш код и представляя конфигурацию вашего сервера, а для вас, чтобы использовать средства отладки.

Если, например, вы используетеИнструменты разработчика Chrome, сетевое представление покажет вам, что в итоге переходит от браузера к сервису, а что возвращается.

Вы можете даже увидеть объяснительное исключение Javascript.

IСильно подозреваю, что вы страдаете от CORS, и что браузер не позволяет вам сделать это, потому что эта веб-страница не обслуживается с http://127.0.0.1:7379.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...