2014-12-22 102 views
-1

我基本上有2個下拉列表和2個標籤。jquery ajax顯示[對象對象]

第一個下拉列表是類別選擇,第二個列表根據類別動態加載項目。

一切都很好,直到現在。

在標籤我試圖顯示ItemName和ItemDescription。

ItemName顯示正常,但當涉及到ItemDescription出於某種原因它顯示[對象對象]。

我注意到在控制檯ItemDescription信息發佈正確,你能幫我找到正確顯示它的方式嗎?

Jquery的:

<script type="text/javascript"> 
     $('#ItemsDivId').hide(); 
     $('#SubmitID').hide(); 
     $('#ItemTypeID').on('change', function() { 
      $.ajax({ 
       type: 'POST', 
       url: '@Url.Action("GetItemTypeForm")', 
       data: { itemTypeId: $('#ItemTypeID').val() }, 
      success: function (results) { 
       var options = $('#ItemsID'); 
       options.empty(); 
       options.append($('<option />').val(null).text("- Select an Item -")); 
       $.each(results, function() { 
        options.append($('<option />').val(this.ItemsID).text(this.Value));     

       });    

       $('#ItemsDivId').show();           

       $('#ItemsID').change(function (results) { 

        $('#SubmitID').show(); 

        $('#ItemName').text($("#ItemsID option:selected").text()); 
        $('#ItemDescription').text($("#ItemsID option:selected").text(this.ItemDescription)); 
       }); 

      } 
      }); 


    }); 
</script> 

JSON:

[HttpPost] 
     public JsonResult GetItemTypeForm(string itemTypeId) 
     { 
      //pseudo code 
      var data = from s in db.Items 
         where s.ItemType.ItemTypeName == itemTypeId && s.ItemActive == true 
         select new { Value = s.ItemName, ItemsID = s.ItemId ,ItemDescription = s.ItemDescription }; 


      return Json(data); 
     } 

回答

0

$("#ItemsID option:selected").text(this.ItemDescription);改變文本,並返回該元素作爲對象。您可以使用jquery data()函數將每個項目的描述保存爲數據。然後在change事件中使用它。

嘗試更改爲此。

<script type="text/javascript"> 
     $('#ItemsDivId').hide(); 
     $('#SubmitID').hide(); 
     $('#ItemTypeID').on('change', function() { 
     $.ajax({ 
       type: 'POST', 
       url: '@Url.Action("GetItemTypeForm")', 
       data: { itemTypeId: $('#ItemTypeID').val() }, 
      success: function (results) { 
       var options = $('#ItemsID'); 
       options.empty(); 
       options.append($('<option />').val(null).text("- Select an Item -")); 
       options.data('description',''); 
       $.each(results, function() { 
        options.append($('<option />').val(this.ItemsID).text(this.Value));     
        options.data('description',this.ItemDescription); 
       });    

       $('#ItemsDivId').show();           

       $('#ItemsID').change(function (results) { 
        $('#SubmitID').show(); 
        $('#ItemName').text($("#ItemsID option:selected").text()); 
        $('#ItemDescription').text($("#ItemsID option:selected").data('description')); 
       }); 

      } 
     }); 
    }); 
</script> 
+0

NOP它不工作時,ItemDescription標籤給我的項目名稱,而不是項目描述 – Wizeman1986

+0

你確定你的服務器設置正確嗎? –

+0

是的,控制檯中的帖子有3個元素及其信息:值,ItemId和ItemDescription – Wizeman1986

0

我做了一些發揮作用的,我找到了解決辦法:

<script type="text/javascript"> 
     $('#ItemsDivId').hide(); 
     $('#SubmitID').hide(); 
     $('#ItemTypeID').on('change', function() { 
      $.ajax({ 
       type: 'POST', 
       url: '@Url.Action("GetItemTypeForm")', 
       data: { itemTypeId: $('#ItemTypeID').val() }, 
       success: function (results) { 
        var options = $('#ItemsID'); 
        options.empty(); 
        options.append($('<option />').val(null).text("- Select an Item -")); 
        options.data('description', ''); 
        $.each(results, function() { 
         options.append($('<option />').val(this.ItemsID).text(this.Value).data('ItemDescription', this.ItemDescription));     
        }); 

        $('#ItemsDivId').show(); 

        $('#ItemsID').change(function (results) { 
         $('#SubmitID').show(); 
         $('#ItemName').text($("#ItemsID option:selected").text()); 
         $('#ItemDescription').text($("#ItemsID option:selected").data('ItemDescription')); 
        }); 

       } 
     }); 
     }); 
</script> 

也非常感謝薩姆帕斯Liyanage領導我正確的方向:)