您的位置:程序门 -> .net技术 -> asp.net



ajax.net中函数调用出现问题了


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


ajax.net中函数调用出现问题了[已结贴,结贴人:symjie520]
发表于:2007-04-18 18:31:59 楼主
在调试ajaxpro结合gridview的时候,出现了奇怪的函数调用的问题
代码如下
using   system;
using   system.data;
using   system.configuration;
using   system.collections;
using   system.web;
using   system.web.security;
using   system.web.ui;
using   system.web.ui.webcontrols;
using   system.web.ui.webcontrols.webparts;
using   system.web.ui.htmlcontrols;
using   system.data.sqlclient;

namespace   loadgridview
{
        public   partial   class   default6   :   system.web.ui.page
        {
                protected   void   page_load(object   sender,   eventargs   e)
                {
                        ajaxpro.utility.registertypeforajax(typeof(default6));
                }
                [ajaxpro.ajaxmethod]
                public   int   addajaxtable(string   name)
                {
                        string   strcon   =   "server=.;database=ajaxtable;uid=sa;pwd=lanjie ";
                        sqlconnection   con   =   new   sqlconnection(strcon);
                        con.open();
                        sqlcommand   com   =   new   sqlcommand();
                        com.commandtext   =   "insert   into   ajaxtt   values( ' "   +   name   +   " ') ";
                        com.connection   =   con;
                        int   result=com.EXECutenonquery();
                        con.close();
                        com.dispose();
                        return   result;
                }
                [ajaxpro.ajaxmethod]
                public   string   getajaxtable(int   a   )
                {
                        string   strcon   =   "server=.;database=ajaxtable;uid=sa;pwd=lanjie ";
                        sqlconnection   con   =   new   sqlconnection(strcon);
                        con.open();
                        sqlcommand   com   =   new   sqlcommand();
                        com.commandtext   =   "select   *   from   ajaxtt ";
                        com.connection   =   con;
                        sqldataadapter   dra   =   new   sqldataadapter();
                        dra.selectcommand   =   com;
                        dataset   ds   =   new   dataset();
                        dra.fill(ds,   "ajaxtt ");
                        con.close();
                        com.dispose();
                        gridview   gv   =   new   gridview();
                        gv.datasource   =   ds;
                        gv.databind();
                        system.text.stringbuilder   strb   =   new   system.text.stringbuilder();
                        system.io.stringwriter   sw   =   new   system.io.stringwriter(strb);
                        system.web.ui.htmltextwriter   htw   =   new   system.web.ui.htmltextwriter(sw);
                        gv.rendercontrol(htw);
                        string   s   =   strb.tostring();
                        return   s;
                }
        }
       
}
<%@   page   language= "c# "   autoeventwireup= "true "   codefile= "default6.aspx.cs "   inherits= "loadgridview.default6 "   %>

<!doctype   html   public   "-//w3c//dtd   xhtml   1.0   transitional//en "   "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd ">

<html   xmlns= "http://www.w3.org/1999/xhtml "   >
<head   runat= "server ">
        <title> 邦定gridview </title>
        <script   language=javascript>
        function   addajax()
        {
          var   name=document.getelementbyid( "nametext ").value;
          loadgridview.default6.addajaxtable(name,callback);
              //   loadgv();    
                         
        }
        function   loadgv()
        {
            loadgridview.default6.getajaxtable(1,callserverback);          
        }
        function   callserverback(res)
        {
          var   cc=document.getelementbyid( "gv ");
          cc.innerhtml=res.value;
        }
        function   callback(ss)
        {
              if(ss.value!=0)
              {
                loadgv();
              }
        }
        </script>
</head>
<body   onload= "loadgv(); ">
        <form   id= "form1 "   runat= "server ">
        <input   type= "text "   id= "nametext "/>
        <input   type= "button "   value= "ajaxbutton "   onclick= "addajax(); "   />
        <div   id= "gv ">
       
        </div>
        </form>
</body>
</html>
这是出问题的代码,如果js代码改写成下面就可以了,
<script   language=javascript>
        function   addajax()
        {
          var   name=document.getelementbyid( "nametext ").value;
          loadgridview.default6.addajaxtable(name);
          loadgv();    
                         
        }
        function   loadgv()
        {
            document.getelementbyid( "nametext ").innerhtml=loadgridview.default6.getajaxtable(1).value;          
        }
       
        </script>
那么这是怎么回事呢?
发表于:2007-04-18 21:35:551楼 得分:0
看不出问题来,唯一的不同就是第二种没有判断if(ss.value!=0)
发表于:2007-04-18 21:48:352楼 得分:20
ajax回调响应函数内不能嵌套调用ajax回调响应函数,若要嵌套调用请用window.settimeout延时执行
发表于:2007-04-18 23:04:163楼 得分:0
谢谢,你说的对,我又想到一个办法了,回调函数如果不在一个类里面,可以嵌套。还是非常的感谢你的提示!不过暂时我还不能结贴,明天我去装个firefox结贴,ie7不能结贴,老是提示脚本错误!


快速检索

最新资讯
热门点击