2010-08-30 16 views
1

我說的就是服務器和JSON響應解析如下:正在返回的JSON是函數調用的結構。無法弄清楚如何使用jQuery

someResponse({ "Response":{"status":"3","message":"Not valid bla bla"} }); 

正確的JSON應該是這樣的,對不對?:

{ 
    "response": 
    { 
     "status":"3", 
     "message":"Not valid bla bla" 
    } 
} 

如果用「someResponse」函數進行封裝,有什麼辦法可以用jQuery實現這些數據?

我的jQuery代碼看起來是這樣的:

$.ajax({ 
    url: "https://someurl/test/request.asp?user=x&pass=x", 
    dataType: "JSONP", 
    success: function(msg){ 
    $("#json_here").html(msg.response.status); 
    }, 
    error:function(x,e){alert(x+" :: "+e)} 
}); 

當然,當我這樣做沒有任何反應。但如果我做$(「#json_here」)。html(msg);那麼我會得到如上所述的全部答覆。

我做錯了什麼或者這是發送JSON數據的無效方式?我沒有得到解析錯誤。

在此先感謝。

回答

6

服務器返回JSONP,而不是JSON。這是爲了促進跨域請求(換句話說,ajax混搭)。

您只需實現一個名爲someResponse的函數來解析答案並將加載的響應插入到頁面中。您的someResponse將被瀏覽器自動調用。你也可以看看JSONP上的衆多tutorials之一。

很多時候,返回JSONP的API允許客戶端爲應該用加載的JSON調用的函數選擇一個名稱。因此,您可以根據需要重新命名處理程序,只需告訴服務器即可。

+0

非常感謝艾德里安。我顯然不知道如何處理JSONP響應。我瞭解JSONP請求是如何工作的,但我不知道它返回了一個函數。我期待定期的JSON回來。 無論如何,我仍然無法弄清楚在哪裏用jQuery構造函數。我已經看到了這個例子與常規的Javascript,但我似乎無法使它與jQuery的工作。如果我在成功函數中構造函數,它當然不起作用。如果我在它之外做了它,我也做了它,但它也不起作用。有沒有人有一個例子? 再次感謝。 – HotFudgeSunday 2010-09-02 15:25:52

+0

@ user435131:這與你提出請求的方式(在這種情況下是jQuery)沒有任何關係。您只需要定義一個與服務器返回的函數調用名稱相同的全局函數。如果這不起作用,請啓動Firebug並嘗試查找任何javascript錯誤。或者分析服務器的輸出,如果沒有的話。調試它不應該太難。 – 2010-09-02 15:51:36

相關問題