2.$.get()方法

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery中的ajax基础方法</title>
</head>
<script type="text/javascript" src="js/jquery-1.11.3.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#country").change(function() {
// 拿到当前country中的值!
var country = $(this).val();
// 告诉服务器,我请求想要获得的数据格式是什么样的
var myDataType = "json"; // xml / json
// 如果country 取到了值,并且不为空的时候。
if (country != undefined && country != null) {
// 根据国家获取该国的城市列表,并设置到城市下拉框中
/*
在使用get方式的时候,发现其中的参数是四个[最开始使用基础$.ajax({})方法的是{},是一个对象]
$.get(url, [data], [callback], [type]) 这里的get四个参数:url、data、callback、type其中,url是必须的,其他用中括号括起来的,
表示可以省略。 注意:相比于ajax,get方式没有了ajax的{}表示对象!!!
不然就直接报错了!这个是我遇到的jQuery能抛出的第一个错,很开心!
Uncaught SyntaxError: Unexpected token +
*/
$.get(
// url
"cityServlet?dataType="+myDataType, // 需要访问的url
// data
{"country":country}, // 传递给后台的数据
// 回调函数
function(data) {
// 在确定data为未定义,或者为空的时候,就不继续往下执行了。
if (data == undefined || data == null) {
// 不知道可不可以这样使用return。
return;
}
// 这里使用的type并不是外部传入的,是我自定义的,告诉服务器我需要什么类型那里
if ("json" == myDataType) {
// 获取从服务器传过来的数据内容:其中的cities是服务器上规定的json的名字
var cities = data.cities; // 直接的json对象
// 清空原来的城市列表
var $citySelect = $("#city"); // 约定jQuery的对象,命令都用$开头
$citySelect.empty(); // 遍历cities,并且将其中的内容append到select中去
$.each(cities, function(i, obj) {
$citySelect.append("<option>"+obj.city+"</option>");
});
}
if ("xml" == myDataType) {
/*
首先将data转成一个jQuery对象,因为xml不像json能够直接操作;
必须先转化成jQuery对象,通过jQuery中提供的解析xml的方法进行操作!
*/
var $xmlDocument = $(data);
var $cities = $xmlDocument.find("city"); // 清空原来的城市列表
var $citySelect = $("#city"); // 约定jQuery的对象,命令都用$开头
$citySelect.empty(); // 遍历cities,并且将其中的内容append到select中去
$.each($cities, function(i, obj) {
/*
上面的json,直接通过data.cities,然后遍历cities的时候,通过foreach的obj
直接obj.city就取出值了。
但是xml的操作就相对麻烦了,xml要先转jQuery对象
通过find查节点,然后组成一个数组,使用的时候,foreach出来,还需要把DOM转jQuery对象
通过jQuery对象去取其中的text,层层剥离。
可以看出在jQuery中,xml的处理方式和html的处理方式完全相同
*/
$citySelect.append("<option>"+$(obj).text()+"</option>");
});
}
},
// 返回值的类型,json? xml?
myDataType
);
} else {
// 未选择国家
alert("请选择国家!");
}
});
});
</script>
<body>
<div style="width:100%;text-align: center;margin-top: 30px;">
国家:<select id="country" style="width:160px;">
<option>请选择</option>
<option value="中国">中国</option>
<option value="美国">美国</option>
</select>
&nbsp;&nbsp;---&nbsp;&nbsp;
城市:<select id="city"></select>
</div>
</body>
</html>

后台servlet:

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; @WebServlet("/cityServlet")
public class CityServlet extends HttpServlet { private static final long serialVersionUID = -1046035703953361573L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String country = request.getParameter("country");
String dataType = request.getParameter("dataType");
/*
String sendType = request.getParameter("sendType");
if (!"post".equals(sendType)) { // 为get方式的时候,因为Tomcat7.0之前才有这个问题,忽略!
country = new String(request.getParameter("country").getBytes("ISO-8859-1"), "utf-8");
}
*/
StringBuffer sb = new StringBuffer("");
if (!"xml".equals(dataType)) {
sb.append("{");
sb.append("\"cities\":[");
if ("中国".equals(country)) {
sb.append("{\"city\":\"北京\"},{\"city\":\"上海\"},{\"city\":\"广州\"},{\"city\":\"深圳\"}");
} else if ("美国".equals(country)) {
sb.append("{\"city\":\"华盛顿特区\"},{\"city\":\"纽约\"},{\"city\":\"洛杉矶\"},{\"city\":\"芝加哥\"}");
}
sb.append("]}");
response.setContentType("text/html;charset=utf-8"); // 纯文本格式
} else {
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root>");
if ("中国".equals(country)) {
sb.append("<city>北京</city>").append("<city>上海</city>").append("<city>广州</city>").append("<city>深圳</city>");
} else if ("美国".equals(country)) {
sb.append("<city>华盛顿特区</city>").append("<city>纽约</city>").append("<city>洛杉矶</city>").append("<city>芝加哥</city>");
}
sb.append("</root>");
response.setContentType("text/xml;charset=utf-8"); // xml格式
}
PrintWriter out = response.getWriter();
out.println(sb.toString());
out.flush(); out.close();
} public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}

jQuery中ajax请求的六种方法(三、二):$.get()方法的更多相关文章

  1. jQuery中ajax请求的六种方法(三、四):$.getJSON()方法

    4.$.getJSON()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  2. jQuery中ajax请求的六种方法(三、三):$.post()方法

    3.$.post()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  3. jQuery中ajax请求的六种方法(三、一):$.ajax()方法

    1.基础的$.ajax()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  4. jQuery中ajax请求的六种方法(三、六):load()方法

    6.load()方法 load的html页面 <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...

  5. jQuery中ajax请求的六种方法(三、五):$.getScript()方法

    5.$.getScript()方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" ...

  6. jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法

    jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Objec ...

  7. jQuery中ajax的使用与缓存问题的解决方法

    http://www.jb51.net/article/44620.htm —————————————————————————————————————————————————————————————— ...

  8. JQuery中ajax请求写法

    $.ajax({ type: "POST", url: "ygdwController.do?getonygdw", data : "id=" ...

  9. jquery中ajax使用error调试错误的方法

    JQuery使我们在开发Ajax应用程序的时候提高了效率,减少了许多兼容性问题,我们在Ajax项目中,遇到ajax异步获取数据出错怎么办,我们可以通过捕捉error事件来获取出错的信息. jquery ...

随机推荐

  1. python之数据驱动yaml操作

    Mail163.yaml配置文件如下: login_data: url : 'https://mail.163.com/'case1: user : '' passwd : '' errorText ...

  2. 关于hive核心

    一.DDL数据定义 1.创建数据库 1)创建一个数据库,数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db. hive (default)> create ...

  3. 分布式ID生成器(CosId)的设计与实现

    分布式ID生成器(CosId)设计与实现 CosId 简介 CosId 旨在提供通用.灵活.高性能的分布式 ID 生成器. 目前提供了俩类 ID 生成器: SnowflakeId : 单机 TPS 性 ...

  4. 每天五分钟Go - 指针

    什么是指针 一个指向内存地址的变量,称为指针变量,指针是一个特殊的变量,他的值存储的是另一个值的内存地址 指针变量的声明 var var_name *type var_name 是指针变量的名称,ty ...

  5. 【Uva1025 A Spy in the Metro】动态规划

    题目描述 某城市地铁是线性的,有n(2≤n≤50)个车站,从左到右编号1~n.有M1辆列车从第1站开始往右开,还有M2辆列车从第n站开始往左开.列车在相邻站台间所需的运行时间是固定的,因为所有列车的运 ...

  6. router-link与router-view的对应关系和映射特点

    router-link对应的router-view规律为: 1.根据to的值而定,值为一层(如 /child)则对应app.vue中的router-view: 值为两层,如 /second/child ...

  7. Hashtable 的实现原理

    概述 和 HashMap 一样,Hashtable 也是一个散列表,它存储的内容是键值对. Hashtable 在 Java 中的定义为: public class Hashtable<K,V& ...

  8. php-socket通信演示

    client: error_reporting(E_ALL); set_time_limit(0); echo "<h2>TCP/IP Connection</h2> ...

  9. 图文实例解析,InnoDB 存储引擎中行锁的三种算法

    前文提到,对于 InnoDB 来说,随时都可以加锁(关于加锁的 SQL 语句这里就不说了,忘记的小伙伴可以翻一下上篇文章),但是并非随时都可以解锁.具体来说,InnoDB 采用的是两阶段锁定协议(tw ...

  10. 未知高度-纯css实现水平垂直居中

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...