index.jsp页面下的
<script  language="javascript">
function reviews(){
var name = $("#name").val();
alert(name);    //可以取道文本框的值
$.get("index.jsp",{name:name},callback);   //也能触发到callback函数}
function callback(data){
$("#username").html(data);
alert("wangcong");   //有提示
}
</script><html:form action="/setPopedom">
 用户名: <input type="text" name="name" id="name"/><br/>
 密  &nbsp;码: <input type="password" name="password" id="pwd"/><br/>
<input type="submit" value="提交" onclick="reviews();return check()"/>
<input type="reset"/><br />
<div id="username"></div>
</html:form>
=======================
setPopedom.java 中的action我写的是
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws Exception {
String name = request.getParameter("name");
String pwd = request.getParameter("password"); response.setCharacterEncoding("GBK");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print("xxxxxx");
out.close();
return null;
}
=====================================
我遇到的问题是。callback返回的 data 接收不到。callback内写$("#username").html("haha"); div部分会显示haha
但是立马会跳转到一个空页面 输出个xxxxxx。
这是什么原因啊 我已经return null了 怎么还是会跳转页面?还是说ACTION内写错了?
$.get("index.jsp",{name:name},callback);有错吗?url地址 是代表的  返回后处理的页面index.jsp 还是form提交的action地址?
求高手帮帮忙吧,我是新学jquery的。不是很懂

解决方案 »

  1.   

    首先我先说说在JQUERY里数据传递的过程:静态页面->JS->SERVLET->JS->静态页面.
    "callback返回的 data 接收不到"是因为在ACTION里你根本就没有将数据传给JS(out.print里只传回"XXXXXX"),JS自然也就不会传递数据回到静态页面.
    "callback内写$("#username").html("haha"); div部分会显示haha",这是理所当然的,你都把数据从JS传回页面指定结点啦,肯定会显示.
    STRUTS1里如果RETURHN NULL,它会跳转到一个空白的页面.因而你要不就将ACTION改成普通的SERVLET,然后将EXECUTE的返回值改成VOID;要不就在配置文件里配置转回原页面.
      

  2.   

    那照你说的我没有在ACTION里传数据给JS。
    那我要怎么传?
    我之前用SERVLET也写过一个。就可以正常显示
      

  3.   

    需要的是你的check函数renturn false;
    客户端验证跟服务端返回的东西无关。
    reviews();函数异步到index.jsp提交参数并返回值。
    他的callback函数接收到的数据是页面的源代码(out.println()输出的或者其他方式)但绝对不是服务器函数的返回值。所以你的reviews();运行后又运行了check函数,如果check函数不返回false的话则form的数据就会被提交到form定义的action地址去。
      

  4.   


    你的url正好反了,是提交的地址。不需要返回地址
    $.get("后台处理的action",{name:name},callback);//注意action的路径不要写错误了
    这里的callback回调会得到下面的out.print的信息
    也就是这个文件
    setPopedom.java 中的action我写的是
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)throws Exception {
    String name = request.getParameter("name");
    String pwd = request.getParameter("password");response.setCharacterEncoding("GBK");
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.print("xxxxxx");//xxx就是ajax的data信息
    out.close();
    return null;//不需要返回是对的
    }
      

  5.   

    <input type="submit" value="提交" onclick="reviews();return check()"/>改为button,submit跳空白页面很正常