그래서 내 페이지에서 $ .ajax 호출에서 컨트롤러의 GetServerUpdateProgress()를 실행하고 있습니다. 디버깅하는 동안 myobj가 제대로 작성되고 올바른 데이터로 채워지는지 확인할 수 있습니다.Javascript Deserialize가 실제 객체 대신 클래스 이름을 반환합니다.
$ .ajax 성공시 데이터가 json 형식이 아닌 대신 문자열 ("TrackerMVC.ClassLib.UpdateAJAXProgress"- 개체 유형)이 나타납니다.
.svc webservice를 사용하여 과거에이 작업을 수행했지만 똑같은 방법으로 객체 값을 가져 오는 데 아무런 문제가 없었습니다.
아이디어가 있으십니까? 감사!
방법 :
public UpdateAJAXProgress GetServerUpdateProgress()
{
string BASE_URL = "http://localhost:55094";
string url = BASE_URL + "/Home/UpdateProgress";
WebRequest wr = WebRequest.Create(url);
wr.Credentials = CredentialCache.DefaultNetworkCredentials; // uses current windows user
var myojb = new UpdateAJAXProgress();
var response = (HttpWebResponse)wr.GetResponse();
var reader = new StreamReader(response.GetResponseStream());
JavaScriptSerializer js = new JavaScriptSerializer();
var objText = reader.ReadToEnd();
myojb = (UpdateAJAXProgress)js.Deserialize(objText, typeof(UpdateAJAXProgress));
return myojb; // during debugging this object has the correct values in the correct format
}
클래스 :
public class UpdateAJAXProgress
{
public int Completed { get; set; }
public int Total { get; set; }
}
자바 스크립트 : 당신은 MVC를 오용하고
$.ajax({
type: "POST",
async: false,
url: '@(Url.Action("GetServerUpdateProgress","Charts"))',
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log(data); // data being returned is: "TrackerMVC.ClassLib.UpdateAJAXProgress"
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.responseText);
}
});
고마워요! 나는 아직도 배우고 있지만 당황 스럽다 나는 완전히 깨닫지 못했다^_ ^ – Robodude