2010-05-31 7 views
0

컨트롤러 :asp.net MVC 만드는 아약스 호출 JSON은

public ActionResult EditOrganizationMeta(int id) 
    { 

    } 


     [HttpPost] 
    [ValidateInput(false)] 
    public ActionResult EditOrganizationMeta(FormCollection collection) 
    { 

    } 

보기 : 내가 아약스 전화를 걸 얼마나

function DoAjaxCall() { 
     var url = '<%= Url.Action("EditOrganizationMeta", "Organization") %>'; 
     //url = url + '/' + dd; 

     $.post(url, null, function(data) { 
      alert(data); 


     }); 
    } 

    <input type="button" name="something" value="Save" onclick="DoAjaxCall()" /> 

, 나는 기본적으로 같은 이름 EditOrganizationMeta 두 개의 기능을 가지고는 작업을 수행 양식 콜렉션이 자동으로 전달됩니다. 기본 호출은 메소드 호출과 관련됩니다.

좋아요. 아약스에서 전화를 걸었습니다.이 코드는 더 이상 실행되지 않습니다.

[HttpPost] 
    [ValidateInput(false)] 
    public ActionResult EditOrganizationMeta(FormCollection collection) 
    { 
     int OrganizationId = 11; 
     string OrganizationName = "Ministry of Interior"; 

     try 
     {  
      string ids = Request.Params // **getting error here some sequence is not there** 
      .Cast<string>() 
      .Where(p => p.StartsWith("button")) 
      .Select(p => p.Substring("button".Length)) 
      .First(); 

      String RealValueOfThatControl = collection[ids]; 


      } 

     } 
     catch { } 


     return RedirectToAction("EditOrganizationMeta", new { id = OrganizationId }); 

    } 

나는 당신은 $ .post 호출의 두 번째 매개 변수를 통해 원하는 데이터를 전달해야 할 사후

+0

AJAX 호출로 리디렉션을 할 수 없습니다 (적어도이 방법은 아닙니다). 현재 코드에서 브라우저에 3xx 응답 코드를 보내면 무시됩니다. 당신이해야 할 일은 페이지 업데이트를 위해 성공 핸들러에서 사용하는 데이터 나 마크 업으로 응답하는 것입니다. 반면에 리다이렉트를 원한다면 AJAX 콜을하는 것은 무엇입니까? – tpeczek

+0

그래, 돌아올거야. 나는 json을 돌려 보낼거야? – maztt

+0

JSON을 반환하려면 데이터 객체를 준비하고 JsonResult로 반환합니다 (컨트롤러의 Json() 메서드를 사용할 수 있음) – tpeczek

답변

2

이 없다고 생각합니다. 가장 쉬운 방법은 (당신이 양식을 게시 할 경우) 다음과 같이 $ .serialize을 사용하는 것입니다

$.post(url, $('#formId').serialize(), function(data) { 
    alert(data); 
}); 

'formId이'입니다

당신이 식별자를 형성한다. 같은 이름을 가진 두 가지 메소드를 갖는 것에 대해 걱정하지 마십시오. HttpVerb에 의해 구분됩니다 (하나는 GET에만 응답하고 POST에는 두 번째 응답).

관련 문제