2013-03-30 97 views
0

我有一个aspx页面,包含一个jquery/ajax调用我的.cs存储过程执行。该存储过程返回一个int值,我希望将其传递回页面表单而不执行页面刷新。ajax jquery返回aspx页面

到目前为止,ajax调用工作得很好。存储过程正在更新我的SQL数据库。我也可以将存储过程中的输出int放置在.cs页面的本地变量中。当我尝试将该变量存储到aspx页面上的隐藏字段时出现问题。

Jquery/Ajax API指出传递给成功函数的三个参数之一是“从服务器返回的数据”。这很好,但我不明白如何告诉ajax“这是我想要返回到我的成功函数的变量”。下面是我的summerized的.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. 

这里是summerized的背后我的.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) 
     { 

     } 

} 

请尽量点我朝着正确的方向。谢谢。

+0

旁注:你或许应该设定预期的MIME类型'文/ html' ..以防万一你碰上的问题未来。 –

回答

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) 
     { 

     } 

} 
+0

WOW。我很惊讶,谢谢你的快速反应。这工作!我在网上做了大量的研究。也许我没有搜索正确的关键字。 “ajax,jquery,返回值,从代码隐藏中获取”等等。如果任何人都可以提出一些关于这个话题的好消息,请发送给我。我需要我所能得到的一切。 TY。 –