2010-04-22 3 views
0

내가 이용하여 다른 사이트에서 MVC 컨트롤러에 속하는 페이지 메서드를 호출하려고 해요 :MVC 2 ASP.NET에서 페이지 메서드에 Ajax 요청을 만들기

$.ajax({ 
      type: "GET", 
      url: "http://localhost:54953/Home/ola", 
      data: "", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(data) { 
       console.log(data.Name); 
      } 
     }); 

방법 코드가 로 그냥 테스트, 정말 간단, 다음과

public ActionResult ola() 
    { 

     return Json(new ActionInfo() 
     { 
      Name = "ola" 
     },JsonRequestBehavior.AllowGet); 

    } 

내가 여기에 제안되는이 aproach를 본 적이, 그리고 실제로 같은 많은, 그것은 작동합니다 ...

내가 이것을 실행, 방화범은 200 OK를 얻지 만 d 받은 ata는 null입니다.

텍스트에 데이터가 있거나 ("빈 문자열"대신 "null 문자열") 데이터를 반환하거나 서버 메서드에서 문자열을 반환하는 등 여러 가지 방법을 시도했습니다 ...

내가 뭘 잘못하고 있는지 말해 줄 수 있니?

public ActionResult ola() 
{ 
    return Json(new { Name = "ola" }, JsonRequestBehavior.AllowGet); 
} 
+0

당신의 ActionInfo.Name 멤버에 대한 액세스 한정자는 무엇인가에 데이터 유형을 설정 봤어? 비공개 인 경우 JSON 결과로 직렬화되지 않습니다. – Jono

+0

JQuery 디버깅을 시도 했습니까? "디버거;"문을 입력하십시오. 성공 방법에서 데이터를 검사 할 수 있습니다. – Mac

답변

1

, 사전에 감사합니다. 그러면 메소드 서명은 public JsonResult ola()이됩니다. 희망이 도움이됩니다.

0

당신은 컨트롤러 액션 메소드에서 JsonResult를 반환 시도해 볼 수도 있습니다 ... 당신이 그렇게처럼 JSON을 반환 해봤

주앙

1

컨트롤러 :

public ActionResult Ola() 
{ 
    // No need to use a custom ActionInfo type here, an anonymous type 
    // will be just fine: 
    return Json(new { Name = "ola" }, JsonRequestBehavior.AllowGet); 
} 

보기 : 모든 의견

$(function { 
    $.getJSON('/home/ola', function(json) { 
     alert(json.Name); 
    }); 
}); 
0

감사합니다. 나는 내가 한 모든 일이 동시에 옳고 그른 것을 알았다.

요청이 모두 작동했지만 요청이 다른 도메인에 만들어졌으며 브라우저를 통해 (IE 제외) 자동으로 차단됩니다. 그것은 보안 문제입니다. 하지만 요청이 모바일 장치에서 작동하기 때문에, 거기에서 테스트했을 때 완벽하게 작동했습니다.

다시 한번 대답 모든 사람 덕분에, 내가 여기에 표시된 :

0

당신이 아약스 호출 크로스 도메인을 만드는 경우 몇 가지 아이디어를 채택 할 수 있습니다. 당신은

dataType: jsonp 

jquery ajax cross domain

관련 문제