2011-03-22 86 views
0

我試圖將這兩塊拼在一起,我甚至不知道問題出在哪裏,沒有警報()和螢火蟲不告訴我任何東西。django - JSON對jQuery的響應

// 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, 「當前頁」:1, 「listingsPerPage」:40}, 「目錄」:[{ 「parentId的」: 「」, 「isParent」 :假的, 「距離」: 「」, 「內容」:{ 「視頻」:{ 「果」:假的, 「inMkt」:假}, 「照片」:{ 「果」:假的, 「inMkt」:假} 「資料」:{ 「無濟於事」:假 「inMkt」:假}, 「DspAd」:{ 「無濟於事」:假 「inMkt」:假}, 「URL」:{ 「無濟於事」:假「inMkt 「:」false「,」Logo「:{」avail「:false,」inMkt「:false}},」id「:」1931218「,」name「:」Future Shop「,」address「 「1180-33 Heritage Meadows Way SE」,「city」:「Calgary」,「prov」:「AB」,「pcode」:「T2H3B8」},「geoCode」:{「latitude」:「50.987988」,「 「:」 - 114.04424「}}]}

+0

你Django的主機上運行的JavaScript? – Anders 2011-03-22 14:22:23

回答

1

您的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

@Spike我在瀏覽器中輸入了url,這就是我得到上面附加的輸出。 我修好了分號,還是不行? – Shreko 2011-03-22 14:14:38

+0

嗯。我剛更新了我的答案,以解決我注意到的另一個可能的問題 – Spike 2011-03-22 14:38:23

+0

@Spike它是一個跨瀏覽器,jquery在我的本地機器上,django服務器在不同的機器上 – Shreko 2011-03-22 15:16:10

0

在調用$ .getJSON()後會丟失分號。沒有技術上的要求,但我看到沒有他們的JavaScript行爲很奇怪。當你用瀏覽器點擊http://myserver:8000/get_yellow/會發生什麼?你看到JSON嗎?

您提供的示例JSON在JSONLint中驗證後,我添加了一個']}'到最後(我假設這不是完整的響應,您確定它是有效的嗎? ):

對於jQuery 1.4,如果JSON文件 包含語法錯誤,則該請求 通常會失敗默默地

0

從視圖中,我總是用下面的代碼數據推送到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

使用上面的例子什麼是jquery代碼來提取例如紅色的顏色? – avatar 2011-06-18 19:15:51