日期:2014-05-20  浏览次数:20621 次

java jsp ajax
我今天在页面上写了两个ajax提交方法 。只能输出一个方法的返回值。另外一个方法的返回值输不出来。?
  不知道是这么回事。难道说ajax提交不能两个一起提交? 还是我哪里弄错了。方法如下:
JScript code


//ajax 提交查询 省级列表
function fn_ajax_seachProvince(){
    createXMLHttpRequest();
    var url="provinceAndCity.do?method=seachProvinceForRegister";
    _XMLHttpRequest.open("post",url,true);
    _XMLHttpRequest.onreadystatechange=fn_callBock_fn_ajax_seachProvince;
    _XMLHttpRequest.send();
}
function fn_callBock_fn_ajax_seachProvince(){ //回调函数
//当XMLHttpRequest读取服务器响应完成
    if (_XMLHttpRequest.readyState == 4) {
        //服务器响应正确(当服务器响应正确时,返回值为200的状态码)
        if (_XMLHttpRequest.status == 200) {
        //使用DIV显示服务器响应的文本
        document.getElementById("province").innerHTML=_XMLHttpRequest.responseText;
        } else {
            ymPrompt.alert({message:'系统提示:查询区域列表错误.'});
        }  
    } else {
        //提示页面不正常
        //window.alert("u60a8u6240u8bf7u6c42u7684u9875u9762u6709u5f02u5e38u3002");
    }
}
//ajax 提交查询 市级列表
function fn_ajax_seachCity(){
    window.alert("你好");
    createXMLHttpRequest();
    var url="provinceAndCity.do?method=seachCityForRegister&&provinceCd="+document.getElementById("provinceID").value;
    _XMLHttpRequest.open("post",url,true);
    _XMLHttpRequest.onreadystatechange=fn_callBock_fn_ajax_seachCity;
    _XMLHttpRequest.send();
}
function fn_callBock_fn_ajax_seachCity(){ //回调函数
//当XMLHttpRequest读取服务器响应完成
    if (_XMLHttpRequest.readyState == 4) {
        //服务器响应正确(当服务器响应正确时,返回值为200的状态码)
        if (_XMLHttpRequest.status == 200) {
        //使用DIV显示服务器响应的文本
        document.getElementById("city").innerHTML=_XMLHttpRequest.responseText;
        } else {
            ymPrompt.alert({message:'系统提示:查询区域列表错误.'});
        }  
    } else {
        //提示页面不正常
        //window.alert("u60a8u6240u8bf7u6c42u7684u9875u9762u6709u5f02u5e38u3002");
    }
}



大家帮我看看。谢谢了。

------解决方案--------------------
貌似不是两个一起提交的,这个算是级联的吧
要在前一个province改变后,去调city的function
------解决方案--------------------
这个用js就能实践了,在网上找一个省市js 很方便的,用的时候直接 window.onload = function(){
这里面是js里的开始函数 例如setep('${provice}','${city}','${county}')}
省市,地区可以是数据库里倒出来的,也可以自己写默认的例如
setep('北京','北京市','北京市')很方便的
------解决方案--------------------
学习了
------解决方案--------------------
ajax是异步通讯,不管ajax执行没执行完毕,都会接着执行ajax下面的语句,如果这时下面的语句用到了ajax的返回值,就会出现楼主说的现象。延迟5秒再执行ajax后面的语句,只能是个权宜之计。能不能在第一个ajax的回调函数里执行,城市的ajax读取呢。我没试过,我写过的级联不是这样写的。
------解决方案--------------------
也没什么,当省级的下拉菜单,发生变化时,onchange事件调用ajax设置市级下拉菜单。页面刚加载时,省级,市级都取默认值。