首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django - JSON对jQuery的响应

django - JSON对jQuery的响应
EN

Stack Overflow用户
提问于 2011-03-22 21:53:03
回答 3查看 8.1K关注 0票数 0

我试图将这两部分粘合在一起,我甚至不知道问题在哪里,没有alert(),firebug也没有告诉我任何事情。

代码语言:javascript
复制
// django with yellow api to find_business search:
// ----------------------

def get_yellow(request):
   mimetype = 'application/json'
   yapi = YellowAPI(settings.YELLOW_API_KEY, test_mode=True, format='JSON', handlers=[])
   data = yapi.find_business(what='403-253-0395', where='Calgary', uid='127.0.0.1')
   print data #I can see here there is a result
   return HttpResponse(data,mimetype)

// jQuery 
// ----------------------

$(document).ready(function(){
    $.getJSON('http://myserver:8000/get_yellow/', 
    function(data) {
        alert('Fetched ' + data.length + ' items!');
    })

});

// I'm including a full response on a simple call, is this a valid json?
// ----------------------

{"summary":{"what":"403-253-0395",“where”:“卡尔加里”,“纬度”:“”,“经度”:“”,"firstListing":1,"lastListing":1,"totalListings":1,"pageCount":1,"currentPage":1,"listingsPerPage":40},"listings":{"parentId":"","isParent":false,"distance":"",“content”:{“视频”:{“avail”:false,"inMkt":false},“照片”:{“avail”:false,"inMkt":false},“个人资料”:{“avail”:false,"inMkt":false},"DspAd":{"avail":false,"inMkt":false},"Url":{"avail":false,"inMkt":false},"Logo":{"avail":false,“inMkt”:false},"id":"1931218",“name”:“未来商店”,“地址”:{“街道”:“114.04424-33遗产草地路东南”,“城市”:“卡尔加里”,"prov":"AB","pcode":"T2H3B8"},“geoCode”:{“纬度”:“50.987988”,“经度”:“-50.987988”}

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-22 22:02:37

你的javascript中有一个语法错误。你少了一个分号。应该是:

代码语言:javascript
复制
$(document).ready(function(){
    $.getJSON('http://myserver:8000/get_yellow/', 
    function(data) {
        alert('Fetched ' + data.length + ' items!');
    });
});

此外,如果你所寻找的是一种调试api代码的方法,那么只需在当前浏览器的地址栏中输入url (http://myserver:8000/get_yellow/)即可。在尝试使用javascript调用它之前,您可能应该先这样做。

更新:

如果这不是跨浏览器请求,则调用应如下所示:

代码语言:javascript
复制
$(document).ready(function(){
    $.getJSON('get_yellow/', 
    function(data) {
        alert('Fetched ' + data.length + ' items!');
    });
});

如果是跨浏览器请求,则应改用jsonp:

代码语言:javascript
复制
$(document).ready(function(){
    $.ajax({
       type: "GET",
       url: "http://myserver:8000/get_yellow/",
       dataType: "jsonp",
       success: function(data) {
           alert('Fetched ' + data.length + ' items!');
       }
     });
});
票数 1
EN

Stack Overflow用户

发布于 2011-03-22 22:23:21

在调用$.getJSON()之后缺少一个分号。在技术上不是必需的,但我见过javascript在没有它们的情况下表现得很奇怪。当你用浏览器点击http://myserver:8000/get_yellow/时会发生什么?你看到JSON了吗?

我在末尾添加了一个']}‘之后,您提供的示例JSON在JSONLint中进行了验证(我假设这不是完整的响应。你确定它是有效的吗?在getJSON()的jQuery应用程序接口中:

从JSON1.4开始,如果jQuery文件包含语法错误,请求通常会以静默方式失败

票数 0
EN

Stack Overflow用户

发布于 2011-03-23 02:00:38

从视图上看,我总是使用以下代码将数据推送到javascript,它工作得很好。数据可以是JSON格式,也可以不是JSON格式,先试试下面这个简单的案例,看看数据是否被推送到了javascript:

代码语言:javascript
复制
from django.utils import simplejson

def get_yellow(request):
    colours = ['red', 'blue', 'yellow']
    data = simplejson.dumps(colours)
    return HttpResponse(data, mimetype='application/javascript')

如果您可以从javascript中警告上述值,请在您的代码中尝试以下操作:

代码语言:javascript
复制
def get_yellow(request):
   yapi = YellowAPI(settings.YELLOW_API_KEY, test_mode=True, format='JSON', handlers=[])
   data = yapi.find_business(what='403-253-0395', where='Calgary', uid='127.0.0.1')
   return HttpResponse(simplejson.dumps(data), mimetype='application/javascript')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5392350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档