2012-07-05 2 views
5

내가 Knockout.js를 사용하여 내 웹 응용 프로그램에 다음과 같은 오류가 점점 오전를 검색 연산자 '에서'사용할 수 없습니다문제는, '길이'

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

내 코드 :

$(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> 

그리고 이것은 내 모델

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

입니다 그리고 이것은 웹 서비스의 코드

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)); 

어떻게해야할까요? 나는 웹에 모든 곳에서 검색하고

업데이트 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

자바 스크립트에서 오류가 발생 했습니까? 그렇다면 브라우저 디버거가 오류가 발생한 행을 지적합니다. 오류가 발생한 위치에 코드를 게시 할 수 있습니까? –

+0

전체 오류 메시지, 행 번호 및 파일 게시 – Esailija

+0

내 질문을 업데이트했습니다. Knockout.js 파일에서 오류가 발생했습니다 – Armand

답변

5

:이 코드 조각이 있었어야

disabilities: ko.observableArray(data) 

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

당신은 $ .post 함수에게 json 응답을 기대하고 있고 jQuery가 자동으로 JavaScript 객체로 파싱 할 것이라고 말할 수도 있습니다 : '$ .post ("url", function (data) {}, 'json'); ' http://api.jquery.com/jQuery.post/ –