在浏览器中显示Webdis响应
我试图在浏览器中使用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>
答案是晚了一点,但我想它可以给其他人有用。 我使用了两台机器,所以如果有任何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);
希望它帮助!
的这个问题的答案是不是有人在这里通过阅读你的代码,想象你的服务器配置,而是让你使用调试工具来想这个问题。
例如,如果您使用Chrome开发人员工具,则网络视图会向您显示从浏览器到服务的结果,以及返回的结果。
你甚至可能只会看到一个解释性的Javascript异常。
我强烈怀疑您患有CORS,并且浏览器拒绝让您这样做,因为此网页未从http://127.0.0.1:7379提供。
我是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
谢谢尼古拉斯。 Webdis正在工作并正确响应。问题在别的地方。顺便说一句,Webdis真的很棒 - 谢谢。 – 2012-02-03 22:59:35
您是否试图将“format = json”传递给您的服务器方法?如果不是,则“data:”属性表示您想要传递的参数,并且必须由服务器方法定义。 – 2012-02-03 01:58:53
这确实看起来相当错误。发布您的PRECISE curl命令行。 – bmargulies 2012-02-03 02:00:10