今天jajax弄了半天,总结了下失败的经验,是因为JAVA服务器端返回值不对,把正确的使用方法在这写一下,如果有和我一样框架的,可以参考参考:
JSP端:
function autoCode(){
var f= document.standardAuthorizeForm
jajax({
url:"<%=request.getcontextpath()%>/standardsystem/standardsystem!autoProcesscode.do",
data:"",
async:false,
success:function(data){
f["processcode"].value=data.message;
}
}
)
}
url里面存放action那头要调用的方法,如果需要传参数给action中的方法就 data{"ACTION端需要的变量":JS端的变量},
如果不需要参数就写data:"", 记住后头一定都是逗号不是分号。
JAVA ACTION端:
public String autoProcesscode(){
String processcode="123";
Message msg= new Message();
msg.setMessage(processcode);
Struts2Utils.renderJson(msg);
//这里不能直接
//Struts2Utils.renderJson(processcode);
//直接传processcode前success:function(data)获取不到值,必须得将processcode放在一个对象里,大家不需要关心msg对象啥,
//只需要知道这个msg有一个string类型叫message的私有变量可以用来存储processcode就行。
//此外还可以用来传List对象,但是直接传一个String XXX或者int XXX就是不行
}
为什么直接传String processcode,那边data就无法获取到值,这我不知道,反正按上述这么写,能成功的将后台的变量通过JAJAX传到前端就OK。 如果有大神知道原因的还望指点一二。
此外,如果前台data传值 data{"ACTION端需要的变量":JS端的变量},“action端需要的变量”必须要在对应的action文件中有对应同名的私有变量,并且有相对应的get set方法。