2012-02-03 133 views
0

我試圖在瀏覽器中使用Webdis和jQuery顯示Redis數據。 Redis和Webdis正在從命令行(使用curl)正常工作,但我無法獲取要在瀏覽器中顯示的數據。 Webdis以JSON響應,並且curl響應爲{「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:」屬性表示您想要傳遞的參數,並且必須由服務器方法定義。 – 2012-02-03 01:58:53

+0

這確實看起來相當錯誤。發佈您的PRECISE curl命令行。 – bmargulies 2012-02-03 02:00:10

回答

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。我今天看看。

乾杯,

尼古拉斯

(編輯)

該請求實際上工作正常,即使當用於一個單獨的域執行。 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,我可以按預期查看響應對象。

我可以證實,它工作在兩個鉻15和Firefox 8

+0

謝謝尼古拉斯。 Webdis正在工作並正確響應。問題在別的地方。順便說一句,Webdis真的很棒 - 謝謝。 – 2012-02-03 22:59:35