初次使用AjaxPro,现在遇到问题。在页面上有两个TextBox控件,一个Html的button控件,现在我要通过在TextBox2中输入的值来通过后台调用方法,从数据库中取出对应的值显示到TextBox1中,具体代码如下: 
服务器端: 
protected void Page_Load(object sender, EventArgs e) 

    AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default),this.Page); 
    if (!Page.IsPostBack) 
    { 
      this.getData(); 
    } 
} [AjaxPro.AjaxMethod] 
public string searchData() 

  SqlConnection cn = new SqlConnection("server=  (local);database=spcontainermanage;trusted_connection=yes"); 
  cn.Open();   SqlCommand cm = new SqlCommand("select driverphone from carInfo where carNum='" +  this.TextBox2.Text.Trim() + "'", cn); 
  string strPhone = cm.ExecuteScalar().ToString(); 
  return strPhone; 
} 客户端: 
function getSearchData() 
    { 
          var obj=ajaxproTest._Default.searchData(); 
          alert(obj.value); 
    } 按钮事件: 
<input id="Button3" type="button" value="button" onclick="getSearchData()" /> 为什么取出来的值总是为null?该如何改正,请教高手。

解决方案 »

  1.   

    [AjaxPro.AjaxMethod] 
    public string searchData(string str) 

      SqlConnection cn = new SqlConnection("server=  (local);database=spcontainermanage;trusted_connection=yes"); 
      cn.Open();   SqlCommand cm = new SqlCommand("select driverphone from carInfo where carNum='" +  str + "'", cn); 
      string strPhone = cm.ExecuteScalar().ToString(); 
      return strPhone; 
    } 客户端: 
    function getSearchData() 
        { 
               //使用var txt=document. 方法获取textbox
              var obj=ajaxproTest._Default.searchData(txt.value); 
              alert(obj.value); 
        } 
      

  2.   

    你先调试searchData() 方法并并监视strPhone变量的值是否得到了再说
      

  3.   

    谢谢yeness,按照您的方法成功了。但我想问一下,为什么一定要是参数的形式呢?
      

  4.   

    貌似没错啊,参考一楼的44
    [AjaxPro.AjaxMethod] 
    public string searchData(string str) 

      SqlConnection cn = new SqlConnection("server=  (local);database=spcontainermanage;trusted_connection=yes"); 
      cn.Open();   SqlCommand cm = new SqlCommand("select driverphone from carInfo where carNum='" +  str + "'", cn); 
      string strPhone = cm.ExecuteScalar().ToString(); 
      return strPhone; 

    客户端:     function getSearchData() 
        { 
              var txt=document.getElementById("文本框ID");
              var obj=ajaxproTest._Default.searchData(txt.value); 
              alert(obj.value); 
        } 
      

  5.   

    你那种方法获取不到文本框值,所以一直为null啦
      

  6.   


    在无刷新的情况下,服务器端无法直接得到textbox的text,就象你点击服务器端按钮在其click事件里取得一个textbox的text值,这是可以取到的,但是你注意到没有,页面是刷新的了,但是当你通过客户端调用ajax服务器方法时,页面没有刷新,虽然此方法执行了,但是这个TextBox并没有回发参数,也就是没有向服务器端提交其text值,所以服务器里的ajax方法得不到值,必须通过客户端提供给参数!
      

  7.   

    因为ajaxpro返回的是一个对象。
    里面不光包含结果,还有error等信息。
    欢迎有空到我博客http://www.flywud.com探讨
      

  8.   

     谢谢phper2008,解释得很好,我明白了 
      

  9.   

    [AjaxPro.AjaxMethod]
    public string searchData(string str)
    {
      SqlConnection cn = new SqlConnection("server=  (local);database=spcontainermanage;trusted_connection=yes");
      cn.Open();  SqlCommand cm = new SqlCommand("select driverphone from carInfo where carNum='" +  str.Replace("'","''") + "'", cn);
      string strPhone = cm.ExecuteScalar().ToString();
    cn.Close();
      return strPhone;
      

  10.   

    客户端: 
    function getSearchData() 
        { 
              var obj=ajaxproTest._Default.searchData(); 
              alert(obj.value); 
        } 取 var obj=ajaxproTest._Default.searchData().value;
          不然会取成object类型