大佬教程收集整理的这篇文章主要介绍了如何让jQuery,AJAX和servlet一起工作?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个允许用户注册该网站的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被采取?
在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,请注明来意。