……
searchReq.open("get",url);
searchReq.onreadystatechange=handleSearchSuggest;  //A
searchReq.send(null);
……function handleSearchSuggest(){//B
……
}如上代码中,如果我要在A,传递一个变量str给B,如何操作呢?直接写 searchReq.onreadystatechange=handleSearchSuggest(str)    function handleSearchSuggest(str);提示A处“尚未实现”,但是在B,用alert确能得到str的值。既然有报错,这么写应该还是不对吧?应该怎么传递呢?

解决方案 »

  1.   

    1 首先handleSearchSuggest是个委托函数,用来接收url传值过去后执行返回的值。
    2 如果你真想要传值给B,那你在url中也要包含你的值,当执行完后返回给B
      

  2.   

    建议用jquery插件吧,可以简化ajax的很多代码
      

  3.   

    在url里面写上你要传给B的值,比如b='b',在handleSearchSuggest接收就是了,如果真有参数,换成全局变量。
      

  4.   

    返回的一个xml格式的内容,这样如何获取呢?
    <?xml version="1.0" encoding="utf-8"?>
    <root>
    <message id="1">
    <text>86-中国-021</text>
    </message>
    </root>如最后那个021是需要返回给handleSearchSuggest的,这个怎么在handleSearchSuggest里面接收呢?
      

  5.   

    JQuery,JQ的AJAX插件好用$.ajax(....);
    $.post(....);
    $.get(.....);
      

  6.   

    两种方法.
    一是URL写参数.
    二个GET传递改为POST.
    var obj = 你要传的东西;
    然后searchReq.send(obj); 
      

  7.   

    用比较笨的办法解决了,在html中放一个hidden属性的input,A提交参数时候同时将变量值放入这个input里面,B下面再取出来……笨了点,但是好像目前没啥错误
      

  8.   

    ……
    第一步声明函数:function handleSearchSuggest(){//B
    ……
    }第二步为该函数新增一个属性Messagestr:handleSearchSuggest.Messagestr="message";/*这样函数handleSearchSuggest就拥一个Messagestr的属性了*/第三步骤你的调用:searchReq.open("get",url);//此处为handleSearchSuggest的Messagestr属性赋值handleSearchSuggest.Messagestr="NewValue";
    searchReq.onreadystatechange=handleSearchSuggest; //A
    searchReq.send(null); 
    ……function handleSearchSuggest(){//B/*在B中引入这个属性用到了arguments.callee(代表正在执行的函数本身,这里是就是:handleSearchSuggest)*/alert(arguments.callee.Messagestr);……
    }