2014-02-18 80 views
1

我有一個HttpPost請求發回一個對象Value如何正確獲取Json值?

我想讓ComputerLocation div在對象Value爲真時出現(s.IsComputer是布爾型)。

目前沒有任何反應。

我試着使用螢火蟲調試和驗證,實際上請求回發對象Value:true,但是當我檢查我的result.ValueValue顯示爲未定義。

請檢查我做錯了什麼?

腳本:

<script type='text/javascript'> 
    $(document).ready(function() { 
     $('#typeddl').on('change', function() {   
      $.ajax({ 
       type: 'POST', 
       url: '@Url.Action("GetItemTypeForm")', 
       data: { itemTypeId: $('#typeddl').val() }, 
       success: function (result) {        
         $('#ComputerLocation').toggle(result.Value === true);   
       } 
      }); 
     }); 
     $('#typeddl').trigger('change'); 
    }); 

</script> 

JSON:

[HttpPost] 
public JsonResult GetItemTypeForm(int itemTypeId) 
     { 
      //pseudo code 
      var data = from s in db.ItemTypes.ToList() 
         where s.ItemTypeId == itemTypeId 
         select new { Value = s.IsComputer }; 

      return Json(data); 
     } 
+0

你確定你沒有遺漏你傳遞給'$ .ajax'的對象的屬性嗎?我想你應該在請求中使用'dataType:「json」'來獲得JSON結果。 – Renan

+0

它似乎發送和接收的數據罰款......它發送下拉ID(3)例如,並收回「價值」:這個ID基本上檢查IsComputer布爾真。 – Wizeman1986

回答

1

使用First方法來得到一個結果,因爲你的查詢返回的IQueryable<T>

var data = (from s in db.ItemTypes.ToList() 
        where s.ItemTypeId == itemTypeId 
        select new { Value = s.IsComputer }).First(); 

然後回到你的結果是這樣的:

return Json(new { Value = data.Value }); 
+0

與原始樣本有什麼不同?它也具有帶有Value屬性的匿名對象作爲LINQ查詢結果 –

+1

'System.Linq.IQueryable '不包含'Value'的定義,也沒有接受類型''的第一個參數的擴展方法'Value' System.Linq.IQueryable '可以找到(你是否缺少using指令或程序集引用?)。我試着返回Json(new {Value = data});但沒有區別 – Wizeman1986

+1

因爲你返回對象的列表,而不是特定的一個。所有返回的對象將被髮送到客戶端。因此它將擁有屬性值爲 –