2012-11-08 7 views
2

jquery ajax를 사용하여 aspx 페이지에서 webmethod를 호출하려고합니다. 아약스 코드는 페이지를 호출하지만, Page_Load에는 아약스 게시 요청 이후에 액세스 했음에도 불구하고 메소드에 들어갈 수 없습니다. 나는 여러 가지 방법으로 시도했지만 나는 할 수 없다.Jquery Ajax 및 asp.net WebMethod

나는 당신이 나를 도울 수 있기를 바랍니다, 나는 미쳐 가고 있습니다.

protected void Page_Load(object sender, EventArgs e) 
    { 
     string nombre = Request.QueryString["nombre"]; 
     if (!IsPostBack) 
     { 
      this.CargarDatosIniciales();     
     } 
    } 

    [WebMethod(enableSession:true)] 
    [ScriptMethod()] 
    public static void GuardarDatosFamilia(string nombre, string tipoDoc) 
    { 
     string nombrePersona = nombre; 
     string tipoDocumento = tipoDoc; 
    } 


    $.ajax({ 
     type: "POST", 
     url: "FRM_Caracterizacion.aspx/GuardarDatosFamilia", //Direccion del servicio web segido de /Nombre del metodo a llamar 
     beforeSend: function() { alert('I am sending'); }, 
     data: "{'nombre':'"+ nombre+"','tipoDoc':'"+ tipoDoc"'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json" 
     }); 

업데이트 : 업데이트 2

 POST http://localhost:51620/FRM_Caracterizacion.aspx/GuardarDatosFamilia 200 OK 3.22s 

    Parámetros application/x-www-form-urlencoded 
    nombre Jhon Fredy 
    tipoDoc 1 
    Fuente 
    nombre=Jhon+Fredy&tipoDoc=1 

: 내 특정 문제에 대해 수행 한 어떤

가 해결

했다

이 내가 방화범 무엇을 얻을 :

 $.ajax({ 
     type: "POST", 
     url: "FRM_Caracterizacion.aspx", //Direccion del servicio web segido de /Nombre del metodo a llamar 
     beforeSend: function() { alert('I am sending'); }, 
     data: { metodo: 'AgregarDatosFamilia', 
     nombre:nombre, 
     tipoDoc:tipoDoc 
     }, 
     dataType: "json" //Esto quiere decir que los datos nos llegaran como un objeto json 
    }); 


    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      if (Request.Form["metodo"] == "AgregarDatosFamilia") 
      { 
       this.GuardarDatosFamilia(); 
      } 
      this.CargarDatosIniciales();     
     } 
    } 

    public void GuardarDatosFamilia() 
    { 
     string nombre = Request.Form["nombre"].ToString(), 
     string tipoDoc = Request.Form["tipoDoc"].ToString() 
    } 

모두에게 감사드립니다.

+0

피들러가 설치되어 있습니까? 그것은 당신에게 철사와 어떤 예외 텍스트를 가로 질러가는 지 보여줄 것입니다. 닷넷 런타임은 여러분의 웹 메소드가 충돌하기 전에 던져 버렸을지도 모릅니다. – akatakritos

+0

정확히 무엇이 잘못 되었습니까? –

+0

무엇을하려고합니까? 당신은 웹 서비스로부터 아무 것도 반환하지 않으며, 아약스 호출 후에 아무 일도 성공하지 못했습니다. –

답변

0

$.ajax({ 
     type: "POST", 
     url: "FRM_Caracterizacion.aspx/GuardarDatosFamilia", //Direccion del servicio web segido de /Nombre del metodo a llamar 
     beforeSend: function() { alert('I am sending'); }, 
     data: "{'nombre':'"+ nombre+"','tipoDoc':'"+ tipoDoc"'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json" 
     }); 

다음 브라우저에서 F12를 쳤고 트래픽을보고 제대로 클라이언트 측에서이 호출되어 있는지 확인 읽기 ,,의 WebMethod에 대해 다른 웹 서비스를 만들 - webmethod가 호출되고있는 것을 볼 수 있습니다. 그러나 아무 것도 반환하지 않습니다.

[WebMethod(enableSession:true)] 
[ScriptMethod()] //this can't be void - change to String 
public static String GuardarDatosFamilia(string nombre, string tipoDoc) 
{ 
    string nombrePersona = nombre; 
    string tipoDocumento = tipoDoc; 
    return "successful ajax"; 
} 

시도해보십시오 - 또한 Page_Load에서 선언 된 문자열 nombre에 액세스하려고 시도했지만 정적 메서드에서는 사용할 수없는 데이터 만 액세스 할 수 있습니다.

void에서 변경하라는 주석 - 실제로는 무효가 될 수 있습니다 -하지만 보통 데이터베이스를 사용하여 작업을 수행하려는 경우 - 클라이언트가 성공했는지 여부를 알 수 있도록 문자열을 반환하는 좋은 방법도 있습니다 또는 아닙니다

+0

무엇이 잘못되었는지 모르지만, aspx 페이지를 올바르게 호출하고있는 것처럼 보인다. 질문이 생겼습니다. 디버깅 시간에 웹 메쏘드에 중단 점을 설정해야합니다. 정말 고마워요. – jisazat

+1

예, 로컬 호스트에서 디버깅하는 동안 중단 점이 작동합니다. –

+0

@jisazat과 비슷한 문제가 있습니다. 필자의 경우에는 전체 페이지 마크 업을 반환하는 대신이 메서드로 들어 가지 않습니다. ASP.NET이 이러한 특성을 사용하도록하려면 특별한 구성 설정이 필요합니까 아니면 ...? –