ajax取值问题  后台已经写好一个返回值是string的方法 并且能够查询出结果 前台接受的时候 var  a= 类名。方法名()结果a 总是取到空值或者是 object  这个怎么解决?

解决方案 »

  1.   

    兄弟 尽量贴出部分代码js ajax 部分 代码
      

  2.   

    var  a= 类名。方法名() 倒是挺有创意的!
    呵呵,你写的类是后台代码,ajax是客户端脚本,二者怎么可能这么方便的就直接进行交互了呢?楼主还是好好的看看ajax的基础知识吧。 你问的这个是最基础的问题。有什么网上搜不到的再来问吧!
      

  3.   


      var xmlhttp;
        //创建XMLhttpRequest
         function CreateXmlhttp()
         {
              try
              {
                   if(window.ActiveXObject)
                   {
                        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                   }
                   else
                   {
                        xmlhttp=new XMLHttpRequest();
                   }
              }
              catch(Error)
              {
                throw new Error("无法创建xmlHttpRequest");
              }
         }
         //获取省
          window.onload=function(){
          tick();
           CreateXmlhttp();
           xmlhttp.open("post","Help.aspx?action=true",true);
           xmlhttp.onreadystatechange=SelectProvince;
           xmlhttp.send(null);
          }
          //省的回调函数
          function SelectProvince()
          {       
                if(xmlhttp.readyState==4 || xmlhttp.readyState=="Complete")
                {
                    var ContrPrice=xmlhttp.responseText;                var arry=new Array();
                    arry=ContrPrice.split("/");
                    var text=new Array();
                    var values=new Array();
                    text=arry[1].split(",");
                    values=arry[0].split(",");
                     var province=document.getElementById("Select1");
                   for(var i=0;i<text.length-1;i++)
                    {   
                        var option=document.createElement("option");
                        option.innerHTML=text[i];
                        option.value=values[i];
                        province.appendChild(option);
                    }
                      }
          }
    红色的部分就是取你后台传过来的string值
      

  4.   

    ..不红。 var ContrPrice=xmlhttp.responseText;         
      

  5.   

    呵呵,有这种写法,楼主用的应该和我一样,是一个开源的Ajax.dll控件
    用了这个控件后,在前台js里就可以这么写:
    var  a= 类名。方法名();
    但是得到的确实是对象,如果楼主确实和我用的是同样的dll,应该这么写:
    var  a= 类名。方法名()
    if(a && !a.error){
      a = a.value;
      alert(a);
    }else{
      alert("出错了");
    }
      

  6.   

    1.在web.config<httpHandlers></httpHandlers>中加入设置
       <add verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
    2.注册ajaxPro.dll
        AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));//Ajaxpro.dll的 
    3.在后台方法类前加入声明,如:
        [AjaxPro.AjaxMethod]
        public static DataTable test()
        {...}
    4,前台js调用
        var test=类名.方法名.value;
      

  7.   


    ajax  扩展组件1.0  
      

  8.   


    我用的是ajax控件  不需要再从回调函数做起的
      

  9.   

    如果你是用var a = 调用方法的返回值的话,
    那么,值就应该等于a.value,这才是取方法的值
      

  10.   

    如果这也取不到,你就用断点测试下方法进去没有,如果进去了,而且在执行中没有任何错误,也没有出现被强制跳出方法的情况,那绝对不会取不到值;强制跳出方法外的情况,主要是不能使用一些当前页面的控件什么的;一使用就会强制中止的,不过可以传session
      

  11.   


    你漏了.value4,前台js调用
        var test=类名.方法名.value; 
      

  12.   


    var Pro_id= document.getElementById("ctl00_ContentPlaceHolder1_DDL_Pro").value;
       var result= AppClass.AjaxGetCityList(Pro_id).value;
       alert (result);这样的话弹出是null  AppClass.AjaxGetCityList(Pro_id)在运行过程中能取得string值
      

  13.   

    那你试一下后台调用AppClass.AjaxGetCityList(Pro_id)这个看一下返回什么
      

  14.   


    返回的是string 这个方法本身是正确 就是要把这个值传给var  a
      

  15.   

    呃...这么怪,没试过不行的!看还有没有其他大神说一下什么问题吧,我觉得不可能的得不到!要不换一个ajax.dll试一下吧!
      

  16.   

    var  a= 类名。方法名() 取回为对象那说明程序运行正常
    是你的后台代码错误,返回的就是一个对象啊!!!
    你不让他返回对象不就得了
      

  17.   

    protected void Page_Load(object sender, EventArgs e)
            {
                //注册ajax
                if (!Page.IsPostBack)
                {
                    AjaxPro.Utility.RegisterTypeForAjax(typeof(Welcom));
                }        }还是不行