两个ajax同时操作一个数据—ajax传两个参数到controller
同时操作一个数据—ajax传两个参数到controller
在编程开发中,经常会遇到需要同时操作一个数据的情况。介绍如何使用Ajax传递两个参数到Controller,并提供解决方案和相关代码。
问题描述
假设我们有一个网页,其中包含两个输入框,分别用于输入用户名和密码。我们希望在用户输入完毕后,通过Ajax将这两个参数传递到后台的Controller中进行处理。
解决方案
为了实现这个目标,我们可以使用jquery的Ajax方法。我们需要在HTML页面中引入jQuery库:
ajax返回的数据怎么判断为空
ajax返回的数据判断为空和普通的判断是否为空是一样的,直接使用if语句判断即可。
工具原料:编辑器、浏览器
1、后台传输的数据一般为Json字符串,如果数据为空则直接传输空字符串或者直接给其他的标识符来让前端区分。
2、简单的代码示例如下:
$({
type:"post",
url:"",
success:function(data){
//参数data是后台传回来的数据
if(data==){
alert("数据为空");
}else{
//做相关的解析处理
}
}
});3、如果是标识符如状态码判断可能是这样的,假设数据为空给一个字段为status的值我。
$({
type:"post",
url:"",
success:function(data){
vardata=(data);
if(==){
alert(数据为空);
}else{
//相关处理
}
}
});
如何区分HTTP协议的无状态和长连接?
HTTP是无状态的也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话 HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。 如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-alive TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。 保持连接节省了为每个请求建立新连接所需的时间,还节约了带宽。 实现长连接要客户端和服务端都支持长连接。 所谓长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差,所谓短连接指建立SOCKET连接后发送后接收完数据后马上断开连接,一般银行都使用短连接短连接:比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。 长连接:有些服务需要长时间连接到服务器,比如CMPP,一般需要自己做在线维持。 最近在看“服务器推送技术”,在B/S结构中,通过某种magic使得客户端不需要通过轮询即可以得到服务端的最新信息(比如股票价格),这样可以节省大量的带宽。 传统的轮询技术对服务器的压力很大,并且造成带宽的极大浪费。 如果改用ajax轮询,可以降低带宽的负荷(因为服务器返回的不是完整页面),但是对服务器的压力并不会有明显的减少。 而推技术(push)可以改善这种情况。 但因为HTTP连接的特性(短暂,必须由客户端发起),使得推技术的实现比较困难,常见的做法是通过延长http 连接的寿命,来实现push。 接下来自然该讨论如何延长http连接的寿命,最简单的自然是死循环法:【servlet代码片段】public void doGet(Request req, Response res) {PrintWriter out = ();……正常输出页面……();while (true) {(输出更新的内容);();(3000);} }如果使用观察者模式则可以进一步提高性能。 但是这种做法的缺点在于客户端请求了这个servlet后,web服务器会开启一个线程执行servlet的代码,而servlet由迟迟不肯结束,造成该线程也无法被释放。 于是乎,一个客户端一个线程,当客户端数量增加时,服务器依然会承受很大的负担。 要从根本上改变这个现象比较复杂,目前的趋势是从web服务器内部入手,用nio(JDK 1.4提出的包)改写request/response的实现,再利用线程池增强服务器的资源利用率,从而解决这个问题,目前支持这一非J2EE官方技术的服务器有Glassfish和Jetty(后者只是听说,没有用过)
同事打开两个JSP网页A和B,在其中一个A网页中修改数据,按"提交"之后,B网页要立即刷新,更新数据。
提供几个思路:1、JS创建窗口在窗口A里用JS打开网页B的窗口,这样后面提交后就可以在JS里刷新窗口B了2、在窗口B里用Ajax刷新窗口B里用Ajax定时检查后台数据有没有修改,有则刷新3、用WebSocket窗口B用WebSocket创建与服务器的长连接,服务器如果有改变则向窗口B推送数据如果以上都不合适,或者太复杂,还有一个最简单的方法,修改页面设计,把网页A、B内容放到一个页面上,或者把B签到A的iframe里,这样刷新就非常简单了。














发表评论