2012-07-05 16 views
5

Tôi nhận được lỗi sau trên ứng dụng web của tôi sử dụng Knockout.js 'trong' điều hànhIssue với Knockout, Không thể sử dụng để tìm kiếm cho 'chiều dài'

Cannot use 'in' operator to search for 'length' 

Mã của tôi:

$(document).ready(function() { 
     AjaxRequest(); 
    }); 

    function AjaxRequest() { 
     $.post("../../Api/DisabilitiesHandler.ashx?method=get", function (data) { 
      var viewModel = { 
       disabilities: ko.observableArray(data) 
      }; 

      ko.applyBindings(viewModel, document.body); 
     }); 
    } 

<table> 
    <tbody data-bind="template: { name: 'disabilitiesRowTemplate', foreach: disabilities }"></tbody> 
</table> 

<script type="text/html" id="disabilitiesRowTemplate"> 
    <tr> 
     <td>Name: 
      <input data-bind="value: Name" /></td> 
     <td> 
      Active <input type="checkbox" data-bind="checked: Active" /></td> 
    </tr> 
</script> 

và đây là mô hình của tôi

public class Disabilities 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public bool Active { get; set; } 
} 

và đây là mã của dịch vụ web

context.Response.ContentType = "application/JSON"; 
DbsaDal.Entities.DBSAEntities db = new DbsaDal.Entities.DBSAEntities(); 
List<DbsaDal.Model.Disabilities> disabilities = DbsaDal.Entities.Disabilities.Get(db); 
context.Response.Write(new JavaScriptSerializer().Serialize(disabilities)); 

Bất kỳ đề xuất nào về việc cần làm? Tôi đã tìm kiếm khắp nơi trên web và không thể tìm thấy bất cứ điều gì hữu ích

Cập nhật 1:

Uncaught TypeError: Cannot use 'in' operator to search for 'length' in [{"Id":1,"Name":"Blind","Active":false},{"Id":2,"Name":"Mute","Active":true}] Knockout.js:92 
+0

Bạn có gặp phải lỗi đó trong javascript không? Nếu vậy, trình gỡ lỗi trình duyệt của bạn sẽ chỉ ra dòng nơi xảy ra lỗi. Bạn có thể đăng mã nơi xảy ra lỗi không? –

+0

Đăng thông báo lỗi đầy đủ, số dòng và tệp – Esailija

+0

Tôi đã cập nhật câu hỏi của mình. Lỗi xảy ra trong tệp Knockout.js – Armand

Trả lời

5

tôi thấy vấn đề của tôi:

disabilities: ko.observableArray(data) 

Đoạn mã này cần phải có được

disabilities: ko.observableArray(ko.utils.parseJson(data)) 
+4

Bạn cũng có thể cho biết hàm $ .post mà bạn đang mong đợi một phản hồi json và jQuery sẽ phân tích nó thành một đối tượng JavaScript tự động: '$ .post (" url ", function (data) {}, 'json'); ' http://api.jquery.com/jQuery.post/ –

Các vấn đề liên quan