在浏览器中显示Webdis响应

时间:2012-02-03 01:53:27

标签: jquery redis

我正在尝试使用Webdis和jQuery在浏览器中显示Redis数据。 Redis和Webdis在命令行中正常工作(使用curl),但我无法在浏览器中显示数据。 Webdis以JSON响应,卷曲响应为 {“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 个答案:

答案 0 :(得分: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 :(得分: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,我可以按预期看到响应对象。

我可以确认它适用于Chromium 15和Firefox 8。

答案 2 :(得分:-1)

这个问题的答案不是通过阅读代码和想象服务器配置来猜测问题,而是让你使用调试工具。

例如,如果您使用Chrome开发人员工具,网络视图将向您显示从浏览器到服务的最终结果以及返回的内容。

你甚至可能只看到一个解释性的Javascript异常。

我强烈怀疑您患有CORS,并且浏览器拒绝让您这样做,因为此网页未在http://127.0.0.1:7379提供。