我正在尝试使用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>
答案 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提供。