2012-02-03 1 views
0

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

код ниже:

<!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> 
+0

Вы пытаетесь передать «format = json» вам серверный метод? Если нет, свойство «data:» представляет параметры, которые вы хотите передать, и их необходимо определить с помощью метода сервера. –

+0

Это выглядит довольно неправильно. Отправьте свою командную строку PRECISE curl. – bmargulies

ответ

1

Ответ немного поздно, но я предполагаю, что это может быть полезным для других людей, к. Я использовал две машины, поэтому, если возникла проблема с 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); 

Надеется, что это помогло!

-1

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

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

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

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

0

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

Я открыл a ticket on the github project to keep track of this issue. Я посмотрю на это сегодня.

Приветствия,

Nicolas

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

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

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

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

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

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

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

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

+0

Спасибо, Николас. Webdis работает и отвечает правильно. Проблема в другом месте. Кстати, Webdis действительно замечательный - спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^