django - JSON-ответ на jQuery - PullRequest
       4

django - JSON-ответ на jQuery

0 голосов
/ 22 марта 2011

Я пытаюсь склеить эти две части вместе, я даже не знаю, в чем проблема, нет оповещения () и firebug ничего мне не говорит.

// 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?
// ----------------------

{"резюме ": {" что ":" 403-253-0395" , "где": "Калгари", "широта": "", "долгота": "", "firstListing": 1, "lastListing": 1,"totalListings": 1, "PageCount": 1, "CurrentPage": 1, "listingsPerPage": 40}, "списки": [{ "ParentId": "", "isParent" ложь "расстояние": "", "содержание": { "Видео": { "помог" ложь "inMkt" ложь}, "Фото": { "выгода" ложь "inMkt" ложь}, "Профиль": { "помог"ложь, "inMkt" ложь}, "DspAd": { "выгода" ложь "inMkt" ложь}, "URL": { "выгода" ложь "inMkt" ложь}, "Логотип":{"util": false, "inMkt": false}}, "id": "1931218", "name": "Future Shop", "address": {"street": "1180-33 Heritage Meadows Way SE", "город": "Калгари", "пров": "AB", "PCODE": "T2H3B8"}, "геокодировать": { "широта": "50,987988", "долгота": "- 114,04424"}}]}

Ответы [ 3 ]

1 голос
/ 22 марта 2011

В вашем 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.

Обновление:

Если это не кросс-браузерный запрос, ваш вызов должен выглядеть следующим образом:

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

Если это кросс-браузерный запрос, вы должны использовать вместо него jsonp:

$(document).ready(function(){
    $.ajax({
       type: "GET",
       url: "http://myserver:8000/get_yellow/",
       dataType: "jsonp",
       success: function(data) {
           alert('Fetched ' + data.length + ' items!');
       }
     });
});
0 голосов
/ 22 марта 2011

С точки зрения, я всегда использую следующий код для отправки данных в JavaScript, и он работает нормально.Данные могут быть в формате JSON или нет, сначала попробуйте следующий простой случай, чтобы увидеть, передаются ли данные в 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, попробуйте выполнить следующее с вашим кодом:

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 голосов
/ 22 марта 2011

Отсутствует точка с запятой после вашего вызова $ .getJSON (). Технически не требуется, но я видел, как javascript ведет себя странно без них. Что происходит, когда вы нажимаете http://myserver:8000/get_yellow/ в своем браузере? Вы видите JSON?

Пример JSON, который вы предоставили, проверяется в JSONLint после того, как я добавил ']}' в конец (я предполагаю, что это не полный ответ. Вы уверены, что он действителен? Из API jQuery для getJSON () :

Начиная с jQuery 1.4, если файл JSON содержит синтаксическую ошибку, запрос обычно молча терпит неудачу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...