日期:2014-05-18  浏览次数:20657 次

关于jsp中的Ajax---(下班前结帖)
在jsp中有一个   text,在页面text中写入数字   通过ajax会将写入的数字计算后返回给页面.当然写入text中的值是变化的.
请问,通过js的什么方法可以将text中变化的值传给ajax?
例如:text中写入   10     ----ajax给后台计算后返回页面12
          如果在10后又加了5,text中是15--------ajax给后台计算后返回页面17

(下班前结帖)

------解决方案--------------------
onchange事件
------解决方案--------------------
jsp代码:
<td class= "td2 "> 卡类型名称: </td>
<td class= "td3 "> <html:text property= "cardTypeName " onblur= "return doCheck(); " styleClass= "txt1 "/> </td>

<script Language= "JavaScript ">
var req;

function doCheck(){
var cardTypeName = document.getElementById( 'cardTypeName ').value;
var url = '../basedata/cardtype.do?method=doContainName&&cardTypeName= ' + cardTypeName;
if(window.XMLHttpRequest)
{
req=new XMLHttpRequest();
}else if(window.ActiveXObject)
{
req=new ActiveXObject( "Microsoft.XMLHTTP ");
}

if(req)
{
req.open( "GET ",url,true);
req.onreadystatechange=callback;
req.send(null);
}
}

function callback()
{
if(req.readyState == 4)
{
if(req.status == 200)
{
showResponse();
}else{
alert( "Not able to retrieve description "+req.statusText);
}
}
}

function showResponse(){
var txt=req.responseText;
if(txt== "1 "){
alert( "卡类型名称已存在,请选择其他名称! ");
cardTypeName=document.getElementById( 'cardTypeName ');
cardTypeName.value= " ";
}else{
}
}

</script>
Java代码:
/**
* 判断卡类型对象名称是否存在
*/
public ActionForward doContainName(
ActionMapping mapping,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res){
String cardTypeName=req.getParameter( "cardTypeName ");
List ctList=cardTypeService.getAll();
List ctNameList=new ArrayList();

Iterator it=ctList.iterator();
while(it.hasNext()){
CardType ct=(CardType)it.next();
String name=ct.getCardTypeName();
ctNameList.add(name);
}
String s= " ";
if(ctNameList.contains(cardTypeName)){
s= "1 ";
}else{
s= "2 ";
}

res.setContentType( "text/xml;charset=GB2312 ");
res.setHeader( "Cache-Control ", "no-cache ");

try {
res.getWriter().write(s);
} catch (Exception e) {
}

return null;
}
------解决方案--------------------
onchange会频繁的访问后台。

你想想,你在文本框输入一个数字,这是就会用ajax访问后台。如果你输入100,那么你的后台就会有3此访问。但onblurs是当你离开这个文本框时,才发生动作。你想想谁要好一些。
------解决方案--------------------
onblurs UP
------解决方案--------------------
乱讲!!!
onKeyUp,onKeyDown,onKeyPress.总之这三个里面,楼住可以自己去搜一下,根据需要应用~