Ajax数据传递
前端页面--------------------------------------------------------------------------------------------
一:get请求
function btn_get_click() {
var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
var username = document.getElementById("txt_username").value;
//添加参数,以求每次访问不同的url,以避免缓存问题
xmlHttp.open("get", "Server.aspx?username=" + encodeURIComponent(username) + "&random=" +Math.random());---1、前端发送数据
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var txt = xmlHttp.responseText;-----1、前端获取回调数据(文本形式:name=value)
document.getElementById("result").innerHTML =txt;----给页面节点赋值
var txt = xmlHttp.responseText;-----2、前端获取回调数据(JSON格式的文本形式)
var citys = txt.evalJSON();
$('s2').innerHTML = '';
for(i=0;i<citys.length;i++){
var op =new Option(citys[i].cityName,citys[i].cityValue);
$('s2').options[i] = op;
}
var txt = xmlHttp.responseText;
var obj = txt.evalJSON();
$('d1').innerHTML = 'name:'+ obj.name + 'birthay:' + obj.birthday; //日期
var xml = xmlHttp.responseXML;----3、前端获取回调数据(xml dom 对象形式)
var mes=xml.getElementsByTagName("mes"); //获取mes节点
var mes_val=mes[0].childNodes[0].nodeValue; //表示第一个mes节点的第一个子节点
$('myres').value=mes_val; //给页面节点赋值
方法二:
var xmlDoc =xhr.responseXML.documentElement;
var name=xmlDoc.childNodes[0].childNodes[0].nodeValue;
var age =xmlDoc.childNodes[1].childNodes[0].nodeValue
}
}
xmlHttp.send(null); //发送请求,参数为null
}
二:post请求
function btn_post_click() {
var xmlHttp = window.XMLHttpRequest ?new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
var username = document.getElementById("txt_username").value;
var age = document.getElementById("txt_age").value;
//文本数据组装:
var data = "username=" + encodeURIComponent(username)+ "&age=" + encodeURIComponent(age);
//JSON数据组装:
var page_data={}; //声明一个JSON类型
page_data.username=username;
page_data.age=age;
var json=JSON.stringify(page_data);//转换为JSON数据,将这个变量json传值到后台,最简单的form提交
//XML数据组装:
第一步:创建一个XML的DOM对象
function CreateDomDoc(){ //该函数应在btn_post_click()函数外定义
Var signatures = ["Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","Msxml2.DOMDocument","Microsoft.XmlDom"];
for(var i=0;i<signatures.length;i++){
try{
var domDoc = new ActiveXObject(signatures[i]);
return domDoc;
}catch(e){ }
}
return null;
}
第二步:从客户端取得数据写入XML的DOM对象
function CreateXml(doc){ //该函数应在btn_post_click()函数外定义
var root= doc.createElement("root");
var NAME = doc.createElement("NAME");
NAME.text= username;
root.appendChild(NAME);
var AGE = doc.createElement("AGE");
AGE.text= age;
root.appendChild(AGE);
doc.appendChild(root);
return doc.xml;
}
第三步 互相调用
var domDoc = CreateDomDoc(); //创建对象 将用send发送到服务器端
if(domDoc!=null){
var xml = CreateXml(domDoc); //写入xml 返回xml文档
}else{
alert("未安装MSXML控件");
}
XML数据组装方法二:
var Xml="<?xml version='1.0' encoding='UTF-8'?>"
+"<root>"
+ "<name>" + username + "</name>"
+"<age>" + age +"</age>"
+"</root>";
//不用担心缓存问题
xmlHttp.open("post", "Server.aspx", true);
//必须设置,否则服务器端收不到参数
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
var txt = xmlHttp.responseText;-----1、前端获取回调数据(文本形式:name=value)
document.getElementById("result").innerHTML =txt;----给页面节点赋值
var txt = xmlHttp.responseText;-----2、前端获取回调数据(JSON格式的文本形式)
var citys = txt.evalJSON();
$('s2').innerHTML = '';
for(i=0;i<citys.length;i++){
var op =new Option(citys[i].cityName,citys[i].cityValue);
$('s2').options[i] = op;
}
var txt = xmlHttp.responseText;
var obj = txt.evalJSON();
$('d1').innerHTML = 'name:'+ obj.name + 'birthay:' + obj.birthday; //日期
var xml = xmlHttp.responseXML;----3、前端获取回调数据(xml dom 对象形式)
var mes=xml.getElementsByTagName("mes"); //获取mes节点
var mes_val=mes[0].childNodes[0].nodeValue; //表示第一个mes节点的第一个子节点
$('myres').value=mes_val; //给页面节点赋值
方法二:
var xmlDoc =xhr.responseXML.documentElement;
var name=xmlDoc.childNodes[0].childNodes[0].nodeValue;
var age =xmlDoc.childNodes[1].childNodes[0].nodeValue
}
}
//发送请求,要data数据
xmlHttp.send(data);---1、前端发送数据(发送前数据处理)
xmlHttp.send(data+“sex=男”);---前端发送数据(数据不处理)
xmlHttp.send(json);---2、前端发送JSON数据(发送前数据处理)
xmlHttp.send(domDoc);---3、前端发送XML对象数据(发送前数据处理)
xmlHttp.send(xml);
}
后端(servlect、jsp、Action):-------------------------------------------------------------------------------------------------------------
public class ActionServlet extends HttpServlet {
public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8"); //XML形式数据输出时:html换成xml
PrintWriter out = response.getWriter();
数据接收----------------------------------------------------------------------------------
1、文本字符串形式数据:
String username =request.getParameter("username");
Double random =Double.parse(request.getParameter("random"));
int age =Int.parse(request.getParameter("age"));
String sex =request.getParameter("sex ");
2、JSON形式数据:
String jsonStr=request.getParameter("json");
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
for(int i=0;i<jsonArray.length(); i++){
JSONObject jsonJ = jsonArray.getJSONObject(i);
User user=new User();
user.setAge(jsonJ.getInt("age"));
user.setUserName(jsonJ.getString("username"));
}
3、XML对象形式数据:
Request.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");//设置接受类型,防止中文出现乱码情况
XmlDocument xmldoc = new XmlDocument(); //建立xml文档对象
xmldoc.Load(Request.InputStream); //接受ajax发送的xml文档对象流 //也可以接受普通字符流
XmlNode nodeName = xmldoc.SelectSingleNode("//NAME"); //获得NAME节点
String name = nodeName.InnerText; //取得节点值
XmlNode nodeAge = xmldoc.SelectSingleNode("//AGE"); //获得AGE节点
String age = nodeAge.InnerText; //取得节点值
数据输出----------------------------------------------------------------------------
1、普通文本形式:(字符串形式)
if("king".equal(username)) out.println("用户名被占用");
out.close();
2、JSON形式:导入 JSON 的 jar 包: JSON_jar.zip
1)java对象:
Option op = new Option("海淀","hd");
JSONObject obj = JSONObject. fromObject (op);
String str = obj.toString();
out.println(str);
out.close();
2)数组:
Option[] ops = {op,op2,op3};
JSONArray obj = JSONArray. fromObject (ops);
String str = obj.toString();
out.println(str);
out.close();
3)集合:
//手工组装josn格式的java数据:
Option op = new Option("海淀","hd");
Option op2 = new Option("东城","dc");
Option op3 = new Option("西城","xc");
List<Option> ops = new ArrayList<Option>();
ops.add(op);
ops.add(op2);
ops.add(op3);
//数据库查询的java对象:(前端取有用的值)
List<Option> ops=optionService.findAll();
JSONArray obj = JSONArray.fromObject(ops);
String str = obj.toString();
out.println(str); ----后端输出JSON数据
out.close();
4)日期:(日期转为JSON需特殊处理)
User user = new User();
user.setBirthday(new Date());
JsonConfig config = new JsonConfig();
config.registerJsonValueProcessor(Date.class, new DateProcessor());
JSONObject obj =JSONObject. fromObject (user,config);
String str = obj.toString();
out.println(str);
out.close();
}
class DateProcessor implements JsonValueProcessor{ //提供日期转换规则的类
private String pattern = "yyyy-MM-dd";
public void setPattern(String pattern) {this.pattern = pattern;}
public Object processArrayValue(Object arg0,JsonConfig arg1) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format((Date)arg0);
}
public Object processObjectValue(String arg0,Object arg1, JsonConfig arg2) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format((Date)arg1);
}
}
3、XML对象形式:(组装xml数据和页面的组装一样)
String Xml="<?xml version='1.0' encoding='UTF-8'?>"
+"<root>"
+ "<name>" + username + "</name>"
+"<age>" + age +"</age>"
+"</root>";
out.println(xml);
out.close();
}
相关推荐
3. **MVC设计模式**:Model-View-Controller模式在Java Web开发中广泛使用,它将业务逻辑、数据模型和用户界面分离,提高了代码的可维护性和可扩展性。书中会介绍如何使用Struts、Spring MVC等框架实现MVC架构。 4....
在Web开发领域,Ajax(Asynchronous JavaScript and XML)与JavaScript是两种至关重要的技术,它们共同构建了现代网页的动态交互体验。Ajax的核心理念是通过后台数据异步交换,实现页面无需刷新即可更新部分内容,...
《21天学通Java Web开发》是一套旨在帮助初学者快速掌握Java Web技术的教程。这个PPT讲稿涵盖了从基础到进阶的各种主题,旨在通过21天的学习,让学习者对Java Web开发有一个全面且深入的理解。以下是这份讲稿中可能...
标题“PHP-JQuery-Ajax-json”揭示了这个压缩包文件主要涉及的是Web开发中的核心技术,具体包括PHP、jQuery、Ajax以及JSON。这四个元素在构建动态、交互式的Web应用程序时起着至关重要的作用。 1. **PHP(Hypertext...
在Laravel框架中,Ajax(异步JavaScript和XML)响应是一种常见的交互方式,它允许前端与后端进行无刷新的数据交换,从而提升用户体验。本文将深入探讨如何在Laravel项目中实现Ajax响应,并提供相关实践指导。 一、...
【标题】"VS2008WebAjax代码-陈利娥.rar" 提供的是一组基于Visual Studio 2008开发的ASP.NET Web应用程序,其中应用了Ajax技术。...同时,这也是一种学习和借鉴他人经验的好方法,有助于提升个人在Web开发领域的技能。
Bootstrap进度条与AJAX后端数据传递结合使用是Web开发中常见的技术结合,通过Bootstrap进度条展示数据加载的进度,提高用户体验,AJAX技术则可以实现在页面不刷新的情况下与服务器进行数据交互。本文将详细介绍...
**Java Web开发与AJAX** 在Java Web开发中,AJAX(Asynchronous JavaScript and XML)是一种核心技术,用于创建动态、交互式的网页应用。通过使用AJAX,开发者可以在不重新加载整个页面的情况下,从服务器获取数据...
在"ajax例子,Google Web Toolkit 1.0.21-ajax example"中,我们可以预期找到的是一个使用GWT 1.0.21构建的Ajax示例应用。这个示例可能展示了如何使用GWT库创建异步通信,以及如何处理服务器返回的数据。通过学习这个...
综上所述,Ajax在WEB开发中扮演着至关重要的角色,通过异步数据交换提升了用户体验,简化了前端与后端的交互。随着技术的发展,Ajax的实现方式也在不断演进,如Promise和Fetch API的引入,让Web应用变得更加高效和...
前端通过发送Ajax请求,可能使用JSON格式传递数据,与后端接口进行交互,后端再通过SQL语句与数据库进行通信,实现数据的增删改查。数据库管理系统可能包括MySQL、Oracle、SQL Server等,具体选择取决于项目需求和...
在Web开发中,JSON常用于后端服务器与前端客户端之间的数据交互,尤其是在AJAX(Asynchronous JavaScript and XML)技术中。 标题“json-servlet-ajax”暗示了我们讨论的重点是关于JSON如何在Servlet和AJAX之间进行...
通过上述知识点,我们可以看出,`Laravel开发-salao-gerencial-ajax`项目是一个全面的Web应用实例,展示了如何利用Laravel框架构建一个高效、用户友好的管理平台。开发者通过熟练运用Laravel的各种特性,实现了复杂...
- **控件间通信**: 学习如何在控件之间传递数据和触发事件。 3. **数据绑定与数据源** - **数据绑定**: 将数据源(如数据库、XML或数组)连接到控件,实现动态数据展示。 - **DataSource控件**: 包括...
该方法可以广泛应用于 Web 开发中,以实现异步数据交互和数据传递。 知识点总结: 1. 使用 $.ajax 对象实现异步数据传递 2. 封装 JSON 数据并将其作为参数传递给服务器端脚本 3. 使用 eval() 函数将 JSON 字符串...
在Web开发中,jQuery是一个广泛使用的JavaScript库,它极大地简化了DOM操作、事件处理和Ajax交互等任务。本文将深入探讨jQuery中的一个关键Ajax方法——`load()`,它允许开发者从服务器动态地加载数据并将其插入到...
XML因其结构清晰、易于解析的特点,常用于配置文件、数据交换等场景,在Java Web开发中起着重要的数据描述和传递作用。 【JSTL(JavaServer Pages Standard Tag Library)基础知识】让开发者能使用预定义的标签来...
Struts和Ajax是两种在Web开发中广泛应用的技术。Struts是一种基于MVC(Model-View-Controller)设计模式的JavaEE框架,它主要用于构建企业级的Web应用程序,提供了一种组织和控制应用逻辑的方式。而Ajax...
4. **前后端交互**:Web IM Widget需要与后端服务器进行数据交换,实现用户身份验证、消息传递等功能。这涉及到了Ajax请求、WebSocket等技术,以及可能的RESTful API设计。 5. **HTML和CSS**:虽然主要涉及...