저는 첫 번째 MVC 응용 프로그램을 빌드하고 AJAX/JSON을 사용하여 검색을 수행하는 중에 문제가 발생했습니다. 문제는 내 컨트롤러에서 반환 한 JSON이 jQuery의 $ .each 메서드를 사용하여 내 항목을 반복 할 수 없다는 의미의 배열이 아닌 것 같습니다. 전자 메일 주소로 사용자를 검색하려고합니다.컨트롤러의 Json() 메서드가 배열을 반환하지 않습니다.
나는 다음과 같은 방법과 SearchController 클래스있어:
[{"EmailAddress":"[email protected]","UserName":"[email protected]","FirstName":"Foo","LastName":"Bar"}]
: 그리고 정확하게 발사와 JSON 배열처럼, 어쨌든 나에게 보이는 뭔가를 반환
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SearchByEmail(string searchString)
{
var users = new List<jsonUser>();
foreach (I_User u in _rep.SearchByEmail(searchString))
{
users.Add(new jsonUser()
{
EmailAddress = u.EmailAddress,
FirstName = u.Firstname,
LastName = u.Surname,
UserName = u.Username
});
}
return Json(users);
}
을 내 페이지에서 다음 코드를 얻었습니다.
$("#search").click(function(evt) {
var emailsearch = jQuery.trim($("#email").val());
$.post("/Search/SearchByEmail", { searchString: emailsearch },
function(Users) {
$("#jsonlist").text(Users); //Added to check what JSON returns.
alert($.isArray(Users)); //Added to work out if jQuery thinks this is an array!
$.each(Users, function() {
//Do stuff on each user item
});
});
});
});
위의 주석 된 행을 추가하면 e는이 함수가 합리적인 결과를 얻고 있음을 입증했지만 (JSON은 위에 게시 됨), 이것이 배열이라고 생각하지 않습니다. 따라서 $ .each 루프의 $ (this)는 정의되지 않습니다.
NerdDinner 응용 프로그램에서이 큰 덩어리를 빌려 왔지만 그 차이점을 실제로 볼 수 없습니다. 어떤 제안이라도 대단히 감사합니다!
으로 올바르게 형식화 된 문자열을 구문 분석합니다. 디버그 호출 $ ("# jsonlist") 이후로 두통이 해결되었습니다. 사용자가 문자열이 아닌 객체 였으면 실패하기 시작했습니다. –