YTDolly 发表于 2013-1-29 11:42:29

ajax 异步加载数据

function changePhoneType(obj1ID,obj2ID){

      var objArea = document.getElementById(obj1ID);
var id = objArea.value;
    var url = "$common.root()/page/downClient.do?method=getPhoneType&phoneBrandId="+id;
      var myAjax= new Ajax.Request(url, {method: 'get',onComplete: showesay});

}

//组装机型下拉框
function showesay(dataResponse) {   
    if(dataResponse.status==200)
{
            var objTown = document.getElementById('phoneType');
            var i;
            for(i = objTown.options.length ; i >= 0 ; i--){
                  objTown.options = null;
            }
            objTown.options = new Option("选择机型");
            objTown.options.value = "";

    var data=eval('('+dataResponse.responseText+')');
   
    for(var i=0;i<data.length;i++){
                  var op= document.createElement("option");   
                  op.text = data.tname;   
                  op.value = data.cname;   
                  objTown.options.add(op);   
    }
    }

    else{
    alert("查询手机品牌失败!");
    }
   
}



if (phoneTypeList != null) {
json.append("[");
int i=1;
for (Object o : phoneTypeList) {
PhoneType pType = (PhoneType) o;
if(i==1){
json.append("{\"tname\":\""+pType.getPhoneBrandCnName()+" "+pType.getPnoneTypeName()+"\",\"cname\":\""+pType.getClientName()+"\"}");
i++;
}
else{
json.append(",{\"tname\":\""+pType.getPhoneBrandCnName()+" "+pType.getPnoneTypeName()+"\",\"cname\":\""+pType.getClientName()+"\"}");
}

}
json.append("]");
}


注意两个地方:
一、在action里生成数据的要符合json格式[{"x":"y"},{"z","a"}];直接用out或者response.getWrite().print(json.toStirng());且在struts1.1的findMapping中直接返回null
二、在前端直接eval('('+dataResponse.responseText+')'),来组织js对象数据,然后拼装需要的数据。
页: [1]
查看完整版本: ajax 异步加载数据