【发布时间】:2011-12-28 07:06:07
【问题描述】:
我让 Django 返回一个 JSON 类型的 HttpResponse,如下所示:
{"lat": "41.1391666667", "alt": " 367401.6875", "lon": " 113.945472222"}
Django views.py 方法的返回语句如下所示:
return HttpResponse( simplejson.dumps( {'lat' : lat , 'alt' : alt , 'lon' : lon} ) , content_type='application/json')
我正在尝试使用带有以下内容的 JQuery 读取 Json:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
// The JSON (simplejson) Django repsonse looks like:
// {"lat": "23.5017777778", "alt": " 371405.03125", "lon": " 92.0223333333"}
document.write('Getting JSON response...');
$.getJSON(< my django url>,
function(data) {
alert(data['alt']);
});
});
</script>
</head>
<body>
</body>
</html>
我对 Javascript / JQuery 非常陌生,并且在这里尝试了许多其他帖子的解决方案,但似乎无法在上面运行我的 JQuery 代码得到任何响应(我没有看到显示我的高度的任何警报按钮)。我已经验证了来自 Django 的 JSON 响应看起来不错。对于我在这里做错的事情,我真的很感激。非常感谢。
【问题讨论】:
-
您是否遇到 JS 错误?你能告诉(来自 FireBug 或 Chrome 开发工具)正在向 django 发出任何请求吗?如果是这样,您会得到预期的响应吗?在你的回调函数中尝试 console.log(data) ,看看它说了什么。需要注意的重要一点是,如果后端抛出任何类型的错误,回调函数将不会被触发——这通常会让 jQuery ajax 的新手绊倒。
-
感谢您的回复 - 通过 FireBug,我可以看到正在发出请求。在 Profile 下,我可以看到“GET http://
200 OK 97ms。还有关于响应标头的信息,包括 Content-Type application/json。但是 FireBug 中的 Response 选项卡是空的?如果我转到 URL我自己它返回一个格式正确的 JSON 响应。还有其他想法吗?谢谢 -
有趣的是,在 Google Chrome 开发工具中,我收到错误消息“XMLHttpRequest 无法加载 http://
。 Access-Control-Allow-Origin 不允许来源 http:// 。' -
响应选项卡为空?这听起来像你的问题,就在那里。在您直接访问请求时的请求方式与使用 ajax 的请求方式之间必须存在一些问题。你确定你传入的是相同的参数吗?
标签: javascript jquery django json getjson