关于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.总之这三个里面,楼住可以自己去搜一下,根据需要应用~
[解决办法]
<script language= "javascript ">
function change(){
alert( "change ");
}
function blura(){
alert( "blur ");
}
</script>
<input type= "text " onchange= "change(); ">
<input type= "text " onblur= "blura(); ">
[解决办法]
楼主要求text中的值改变了才传给后台,我认为用onchange合适,onblur是在焦点离开时就往后台传数据,也就是不改变它也传,这与楼主的要求不符啊:)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
变不变可以自己判断的。
[解决办法]
onKeyPress()事件就可以了
[解决办法]
对于text来说
onchange是失去焦点以后才会触发,所以根本没什么用