2014-12-19 43 views
2

似乎無法找到我在搜索中查找的內容,因此這可能是重複的,但我還沒有找到原始的sooo。以優雅的方式解析響應文本作爲鍵值對

我有一個調用Ajax:

$.ajax({ 
    url: "/events/instructor/", 
    type: 'POST', 
    data: { 
     instructorID: $(this).attr("id") 
    }, 
    complete: function (data) { 
     $("#name").html(data["responseText"]["name"]); 
     $("#email").html(data["responseText"]["email"]); 
     $("#photo").html(data["responseText"]["photo"]); 
     $("#summary").html(data["responseText"]["summary"]); 
     $("#url").html(data["responseText"]["url"]); 
    } 
}); 

正在返回的數據是由服務器(C#)在JSON編碼。

顯然,data["responseText"]["fieldName"]沒有做到這一點。我可以進行分割,但不是那樣,但這意味着如果格式發生變化,我需要確保上面的代碼跟上數據的變化形狀。

我怎麼能說一些簡單的data["responseText']["fieldName"]來獲得該密鑰的價值?

+2

我認爲你需要解析JSON首先要看http://api.jquery.com/jquery.parsejson/ – kpblc

+1

哈,這給了我想要的東西。 var obj = $ .parseJSON(data [「responseText」]); console.debug(obj.name); 發表您的評論作爲回答,所以我可以給你信用! – MetalPhoenix

+1

完成。高興地幫助) – kpblc

回答

1

我想你需要先解析json。請看api.jquery.com/jquery.parsejson

// data = '{ "name": "John" }' 
var obj = jQuery.parseJSON(data); 
console.log(obj.name); 
// result will be "John" 

P.S.也更好地利用「更迭」,而不是「完整的」,你可以看到這個在這裏Difference between .success() and .complete()?

success: function(data) { 
    console.log("response is good", data); 
}, 
error: function(){ 
    console.log("something is went wrong"); 
} 
+0

感謝並注意到成功vs完成 – MetalPhoenix

0

嘗試使用這樣的:

complete: function (data) { 
     var data=JSON.parse(data); 
     $("#name").html(data.responseText.name); 
     $("#email").html(data.responseText.email); 
     $("#photo").html(data.responseText.photo); 
     $("#summary").html(data.responseText.summary); 
     $("#url").html(data.responseText.url);  

    } 

只得到正確的迴應中使用成功。