2016-06-28 47 views
1

JSON響應提取元素有一個ASP.Net MVC應用程序,我得到了使用此代碼段與服務器的響應JSON我如何從jQuery中

public JsonResult GetVehicleByID(string VehicleID) 
{ 
    db.Configuration.ProxyCreationEnabled = false;   

    var res = from type in db.Vehicles 
       where type.ID == VehicleID 
       select new 
       { 
        ID = type.ID, 
        RegNo = type.RegNo 
       }; 
    return Json(res, JsonRequestBehavior.AllowGet); 
} 

上面的代碼返回以下Json(谷歌郵差)

[ 
    { 
    "ID": "000001", 
    "Type": "Internal" 
    } 
] 

我處理使用以下jQuery Ajax

function GetVehicle(id) { 
    $.ajax({ 
     async: true, 
     url: "GetVehicleByID?VehicleID=" + id, 
     cache: false, 
     dataType: "json", 
     contentType: "application/json", 
     success: function (data) { 

      //Parsing Method 1 
      //var a = jQuery.parseJSON(data); 
      //console.log(a.Type); 

      //Parsing Method 2 
      var b = $.parseJSON(data); 
      console.log(b['Type']); 
     } 
    }); 
} 

我無法的Type元件從該響應中提取該響應。在Stack Overflow中有幾個類似的問題,這些問題的解決方案是關於解析。我試圖解析2種方式,但瀏覽器日誌給出了以下錯誤

Uncaught SyntaxError: Unexpected token o in JSON at position 1

幫助是高度讚賞而不是標記爲重複此問題。

+0

在調試器模式下檢查數據..它是否作爲一個對象不是 –

+0

是Guradio。我也嘗試過。但同樣的輸出 – Chamith

+0

不需要解析,因爲這個'dataType:「json」,'try data [0] .Type刪除解析 – guradio

回答

1

試試只是console.log(data[0].Type)。我相信jQuery已經將響應解析爲JSON,因爲您指定了dataType: "json",並且來自服務器的響應具有正確的Content-Type標題。

+0

它給出了一個'undefined'的輸出 – Chamith

+0

@Chamith你是否抓住了我的編輯? '數據[0] .Type'? (來自服務器的響應是一個數組。)試試'console.log(data [0])'看看有什麼。 – smarx

+0

@Chamith然後,服務器的JSON響應可能並不像上面那樣。 'console.log(data)'顯示了什麼? – smarx

0

正如@smarx說的jQuery已經解碼的JSON你,這樣你就可以直接訪問到從數據變量的類型,但如果沒有,你可以解析與JS函數解析JSON響應:

var json_data = JSON.parse(data); 
console.log(json_data);