0

ストアド プロシージャが実行される .cs への jquery/ajax 呼び出しを含む aspx ページがあります。ストアド プロシージャは、ページを更新せずに元のフォームに戻したい int 値を返します。

これまでのところ、ajax 呼び出しはうまく機能しています。ストアド プロシージャが SQL データベースを更新しています。また、ストアド プロシージャから出力された int を .cs ページのローカル変数に入れることもできます。その変数を aspx ページの非表示フィールドに格納しようとすると、問題が発生します。

Jquery/Ajax API は、success 関数に渡される 3 つの引数の 1 つが「サーバーから返されたデータ」であると述べています。それは素晴らしいことですが、「これは成功関数に返したい変数です」と ajax に伝える方法がわかりません。以下は私の要約した.aspxコードです:

   var dataToSend = { somedata: $("#somefield").val(), MethodName: 'myMethod'};
    var options =
        {
          url: '<%=ResolveUrl("~/mypage.aspx") %>',
          async: false,
          data: dataToSend,
          dataType: 'text',
          type: 'POST',
          success: function (result) {
          // I would like to store the returned data 
          // into a hidden field on the client side (this aspx page)         
          alert(result); //currently the result only shows the aspx/html of my page.

これが私の.csコードビハインドの要約版です:

using System;
using System.Collections.Generic;
using System.Data;  //
using System.Data.SqlClient; //
using System.Data.SqlTypes; //
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;


public partial class _Default : System.Web.UI.Page
{ 
    public int passmetoaspx;
    private string strsomedata;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (Request.Form["MethodName"] == "myMethod")
            {
                updateDatabase();
                return;
            }
        }
    }
    protected void updateDatabase()
    {
        try
        { 
            // create string variables for form data
            somedata = Request.Form["somedata"].ToString();
            using (SqlConnection sconn = new SqlConnection(myconnstring))
            {
                using (SqlCommand scmd = new SqlCommand("mystored_procedure", sconn))
                {
                 scmd.CommandType = CommandType.StoredProcedure;
                 scmd.Parameters.Add("@somedata", SqlDbType.VarChar).Value = strsomedata;
                 scmd.Parameters.Add("@sndtoASPXpage", SqlDbType.Int);
                 scmd.Parameters["@sndtoASPXpage"].Direction = ParameterDirection.Output; 
                 sconn.Open();
                 scmd.ExecuteScalar(); 
                 int returnUID;
                 passmetoASPXpage =     int.Parse(scmd.Parameters["@sendtoASPXpage"].Value.ToString());
                }
            }   
        }
        catch (Exception er)
        {

        }

}

ここで私を正しい方向に向けるようにしてください。ありがとうございました。

4

1 に答える 1

1

おそらく最善の解決策ではありませんが、次のようにすることができます。

    protected void updateDatabase()
    {
        try
        { 
            // create string variables for form data
            somedata = Request.Form["somedata"].ToString();
            using (SqlConnection sconn = new SqlConnection(myconnstring))
            {
                using (SqlCommand scmd = new SqlCommand("mystored_procedure", sconn))
                {
                 scmd.CommandType = CommandType.StoredProcedure;
                 scmd.Parameters.Add("@somedata", SqlDbType.VarChar).Value = strsomedata;
                 scmd.Parameters.Add("@sndtoASPXpage", SqlDbType.Int);
                 scmd.Parameters["@sndtoASPXpage"].Direction = ParameterDirection.Output; 
                 sconn.Open();
                 scmd.ExecuteScalar(); 
                 int returnUID;
                 passmetoASPXpage =     int.Parse(scmd.Parameters["@sendtoASPXpage"].Value.ToString());

//Write to REsponse
      HttpContext.Current.Response.Write(passmetoASPpage.ToString());
        HttpContext.Current.Response.End();


                }
            }   
        }
        catch (Exception er)
        {

        }

}
于 2013-03-30T00:50:36.863 に答える