jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何让jQuery,AJAX和servlet一起工作?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我是jQuery和 AJAX的新手,但是经过7个小时的阅读教程和玩代码之后,我对他们的工作方式有了一个很好的理解.这就是我想要完成的……

我有一个允许用户注册该网站的Web应用程序.我希望他们输入的userName(在注册页面中)异步检查数据库中是否存在.看起来很直接,但我没有运气.

这是我写的jQuery ….

$(document).ready(function() {
        $("a").click(function(){
            alert("Should be going to servlet Now");
            $.ajax({
                type: 'GET',url: "checkName",data: {userName: "Hexose"},success: function(data){ alert(data);}
            });
        });

    });

我现在正在使用静态数据进行调试,因为我有一个问题从表单字段中获取值.我也不太了解成功:功能部分,什么是“数据”作为函数的参数?是否有回应?

现在我有一个servlet映射到“checkName”并且servlet工作(我调试并通过URL传递参数).这是servlet代码……

public class checkUserNameServlet extends httpServlet {

protected void doGet(httpServletrequest request,httpServletResponse responsE)
        throws ServletException,IOException {

    @R_673_10495@ng targetUN = request.getParameter("userName");

    if (data.UserDB.USERNAMEExists(targetUN)) {
        @R_673_10495@ng exists = "Username already taken...";
        response.setContentType("text");
        response.setHeader("Cache-Control","no-cache");
        response.getWriter().write(exists);
        response.setStatus(200);
    } else {
        response.getWriter().write("Username is available...");
    }
}

}

我知道我对数据库调用返回了我需要的内容,但我怀疑这个servlet中的某些内容错误的.这里的好处是数据应该来自的元素

<tr>
  <td align="right">Username:</td>
  <td><input type="text" name="userName" id="userName" value="${user.userNamE}"  /</td>
  <td><span id="exist"> <a href="">check Availability</a></span></td>
</tr>

基本上我的问题是……
1.我是否正确使用jQuery,使用.ajax和诸如此类的东西?有更简单的方法可以做到这一点或其他更清洁的方法吗?
2.我的servlet有什么问题吗?我觉得响应不正确或我编码错误.
3.我如何从userName元素中获取值?我使用了$(“#userName”).val(),它总是给空字符串或null.

任何指针或提示或此处的任何内容都将非常感激,我有在这一点上失去理智.此外,如果我完全关闭任何这个,请随意指向一个好的教程.

提前致谢.

编辑:所以userName元素的ID是我的问题.我改变了ID,现在整个工作都有效.但是有一个跟进问题.有没有办法停止表单提交,如果响应回来并说userName被采取?

解决方法

1. jQuery ajax()

在JavaScript中,您无法真正生成新线程 – 您可以使用setTimeout()或seTinterval()获得最接近的线程.这意味着需要很长时间的操作(比如通过网络获取数据)将阻止其他所有操作.因此,您经常会看到正在使用的回调函数(这利用了函数是JavaScript中的一等成员的事实).

ajax()函数的成功参数就是一个回调函数,它将在请求成功完成时调用认情况下,ajax请求是异步的,因此您需要挂钩以在操作完成时通知.想想它有点像在Swing中注册一个监听器,如果你曾经使用过它.成功函数将使用某些参数调用(请记住,JavaScript支持var-args),其中第一个是作为响应接收的数据.如果jQuery可以正确识别数据类型(或者如果在调用ajax()时设置dataType参数),则数据将是可供使用的已解析响应.

在这种情况下您可以使用的简写是jQuery @L_404_2@ – 它在内部使用ajax()但是为您提供了一个更简单的函数调用来用于生成GET请求

此外,正如其他人所指出的,您应该将click事件处理程序附加到更具体的元素和元素,通常最好防止认(event.preventDefault()),以便浏览器不会跟随链接.

您可能希望使用Firebug for Firefox – 它提供了一个可以记录数据的控制台对象 – console.log(“响应:”,数据)将打印出数据内容到控制台,如果它是一个对象(如JSON)它甚至可以以分层的方式出现,你可以探索.它比一堆alert()阻止执行要好得多,直到你点击ok并且不那么烦人.

2. Servlet

为什么你认为有问题?你的servlet看起来很好,除了一些不必要的东西(比如将状态代码设置为200).此外,您可能希望将content-type更改为text / plain,这是纯文本的常用MIME类型.稍后,您可能会查看JSON并发送回JSON响应,以便您可以以结构化方式将更多信息打包到您的响应中(例如,当请求的用户名不可用时表示建议的用户名),JavaScript可以轻松使用客户方.

3.获取文本字段值

这看起来也很好 – $(“#userName”).val().您可以使用Firebug来浏览当前DOM并查看文本字段的值设置为什么.你的代码一个问题,但我不确定你在这里粘贴它时是否犯了错误,或者它是否是代码中的实际问题.你错过了关闭角度括号>在< / td>之前

< td>< input type =“text”name =“userName”id =“userName”value =“${user.userNamE}”/< / td>

大佬总结

以上是大佬教程为你收集整理的如何让jQuery,AJAX和servlet一起工作?全部内容,希望文章能够帮你解决如何让jQuery,AJAX和servlet一起工作?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。