4

jquery ajaxを使用してaspxページでwebmethodを呼び出そうとしています。ajaxコードはページを呼び出していますが、ajax Postリクエストの後にPage_Loadがアクセスされていますが、メソッドに入ることができません。いろいろやってみたけど無理。

私はあなたが私を助けてくれることを願っています、私は夢中になっています。

    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" 
        });

アップデート:

これは私がFirebugで得たものです:

     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

更新 2:

解決

私が特定の問題に対して行ったことは次のとおりです。

     $.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()
    }

みんなありがとう、私は提案に感謝します!

4

2 に答える 2

2

クライアント側でこれを適切に呼び出していることを確認してください

  $.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(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にアクセスしようとした場合も、テストしてみてください。アクセスできるデータは、webmethodに渡されたものだけです。

ボイドから変更するようにコメントを付けました-実際にはボイドになる可能性があります-しかし、それは、通常はデータベースを使用して何らかのアクションを実行したい場合でも、文字列を返してクライアントにそれがあったかどうかを知らせることをお勧めします成功するかどうか

于 2012-11-08T04:10:06.423 に答える
1

webmethod 用に別の webservice を作成します。 続きを読むConsuming-Webservice-using-JQuery-ASP-NET-Applicatwebservice の呼び出し

于 2012-11-08T04:03:18.430 に答える