2012-02-03 113 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