2014-10-31 113 views
1

我正在與.load函數在jQuery中加載一個html頁面到一個div與ajax,但我有問題,因爲服務器始終不發送一個html,有時它會發送一個json和我想要json.load如何獲得與.load jQuery的響應

我認爲這將是在回調函數response.load但它返回不確定的,只是把那json入格,所以我怎麼可以得到json.load

服務器發送該JSON:

{ok : false} 

這裏是我的jQuery代碼:

$("#div").load("url", function(response, status, xhr) { 
    ////how can I get the false result here response.ok return nothing!!! 
    console.log(response.ok); 
    if (status == "error") { 
     var msg = "Sorry but there was an error: "; 
     $("#div").html(msg + xhr.status + " " + xhr.statusText); 
    } 
}); 
+0

如果你只是想要JSON,你爲什麼要用'.load()'而不是'.get()'? – jfriend00 2014-10-31 20:34:31

+0

@ jfriend00因爲正如我所提到的,服務器有時會發送一個html和.load函數,但在某些情況下它會返回一個josn,我想用.load來獲得該json – 2014-10-31 20:36:48

+0

爲什麼不使用'.get()'然後你可以檢查返回數據類型,如果服務器返回HTML,則可以將其放入DOM(如'.load()'會這樣做),但是如果返回JSON,那麼您已經有了JSON響應。你提出請求並且不知道服務器將返回什麼似乎有點奇怪 - 通常情況並非如此。 – jfriend00 2014-10-31 20:43:15

回答

2

我認爲你必須做這樣的事情:

$("#div").load("url", function(response, status, xhr) { 
    var responseAsObject = $.parseJSON(response); 
    console.log(responseAsObject.ok); 
}); 
0

使用響應替換#div html內容:

$("#div").load("url", function (responseTxt, statusTxt, xhr) { 
    if (statusTxt == "success") { 
     var responseAsObject = $.parseJSON(response); 
     $(this).html(responseAsObject.response); 
    } 
    if (statusTxt == "error") 
     alert("Error: " + xhr.status + ": " + xhr.statusText); 
});