Ajax嵌套

把全国省市的两个XML文件整合成一个JSON格式的数据
<script type="text/javascript">
$(function () {
$.ajax({
type: "get",
url: "/XmlData/Provinces.xml",
datatype: "xml",
success: function (xml) {
$("body").append("{");
$(xml).find("Provinces > Province").each(function (i) {
$("body").append("{\"PID\":\"" + $(this).attr("ID") + "\",\"ProvinceName\": \"" + $(this).attr("ProvinceName") + "\",\"Citys\":[");
//根据省份,请求读取该省的市
GetCitys($(this).attr("ID"));
//第二个请求end
$("body").append("]},<br/>");
});
}
});
})
//第二次请求
function GetCitys(pid) {
$.ajax({
type: "get",
url: "/XmlData/Cities.xml",
datatype: "xml",
async: false,//注意!!这个为必要的参数,不然这个会在上面的Ajax请求后才执行
success: function (xml) {
$(xml).find("Cities > City[PID=" + pid + "]").each(function (i) {
$("body").append("{\"CityID\":\"" + $(this).attr("ID") + "\",\"CityName\":\"" + $(this).attr("CityName") + "\"},");
});
}
});
}结果:
{  {\"ProvinceID\":\"1\",\"Province\":\"北京市\",\"City\":[{\"CityID\":\"1\",\"CityName\":\"北京市\"}]},
  {\"ProvinceID\":\"2\",\"Province\":\"天津市\",\"City\":[{\"CityID\":\"2\",\"CityName\":\"天津市\"}]},  。。。。。}
时间: 2024-10-19 22:38:42

Ajax嵌套的相关文章

jquery ajax嵌套 jquery ajax

点击链接加入群[JavaEE(SSH+IntelliJIDE+Maven)]:http://jq.qq.com/?_wv=1027&k=L2rbHv $.ajax({    url: "要访问的地址",    async: false ,//嵌套时最好加上这个,不然容易出问题,我的就是这里出问题了,外层的应该无所谓,内层一定要加    data: "参数名=参数值",    success: function(msg){                   

ajax嵌套ajax 可能出现问题 的解决办法

ajax由于他的异步特性 在第一次请求中的循环中嵌套第二个ajax会数据会读不出来 第一种 描述:如果条件许可,把两次请求都放在服务端处理掉一起发回来,这些就在客户端只有一次ajax了 优点:代码放在服务端,安全性比较,且服务端处理速度较快 缺点:可能请求的数据格式是json,这样在服务端处理JSON数据还需要对JSON进行反序列化,这样就比较麻烦 第二种 描述:是我第一次解决这个问题的时候用的比较蠢的办法,第一次请求的ajax,循环值PUSH到公共变量中去,然后用这个公共变量作为参数去请求第二

Ajax嵌套调用 (jquery) $.ajaxSettings.async = false;

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="../javascripts/

jquery 中多个存在依赖关系的ajax调用解决办法

在使用ajax异步调用的时候,可能碰到同时调用多个ajax这种情况.而且多个ajax之间还存在依赖关系.这种情况怎么处理呢?   有两种办法: 一种是多个ajax嵌套调用,这时需要设置async为false,也就是便成同步的了,但是这种方法存在一个弊端,如果后台出现问题,一直忙,不能返回数据,浏览器将出现卡死的情况.   第二种方法是使用队列的方法.将ajax加入到队列中,然后依次调用即可. 这里举个例子. index.html<!DOCTYPE html> <html> <

使用JQuery Deferred对象的then() 解决多个AJAX操作顺序依赖的问题

原文地址:http://www.2cto.com/kf/201507/424202.html 之前的文章javascript异步代码的回调地狱中提到了编写AJAX代码经常遇到的3个问题,现在我们看下如何利用then()解决第2个问题:如果AJAX请求之间存在依赖关系,我们的代码就会形成Pyramid of Doom(金字塔厄运).比如我们要完成这样一件事:有4个供Ajax访问的url地址,需要先Ajax访问第1个,在第1个访问完成后,用拿到的返回数据作为参数再访问第2个,第2个访问完成后再第3个

多个ajax返回发生混乱

加载页面的时候发送多个ajax $(function () { $.ajax({ url:"url1", type:"POST", dataType:"json", success:function(data){ $("#html1").html(data.getData1); }}); $.ajax({ url:"url2", type:"POST", dataType:"j

JavaScript异步编程(2)- 先驱者:jsDeferred

原文出处: linkFly   欢迎分享原创到伯乐头条 JavaScript当前有众多实现异步编程的方式,最为耀眼的就是ECMAScript 6规范中的Promise对象,它来自于CommonJS小组的努力:Promise/A+规范. 研究javascript的异步编程,jsDeferred也是有必要探索的:因为Promise/A+规范的制定基本上是奠定在jsDeferred上,它是javascript异步编程中里程碑式的作品.jsDeferred自身的实现也是非常有意思的. 本文将探讨项目js

不使用回调函数的ajax请求实现(async和await简化回调函数嵌套)

在常规的服务器端程序设计中, 比如说爬虫程序, 发送http请求的过程会使整个执行过程阻塞,直到http请求响应完成代码才会继续执行, 以php为例子 $url = "http://www.google.com.hk"; $result = file_get_contents($url); echo $result; 当代码执行到第二行时,程序便陷入了等待,直到请求完成,程序才会继续往下跑将抓取到的html输出.这种做法的好处是代码简洁明了,运行流程清晰, 容易维护. 缺点就是程序的运

拥抱基于jquery.deferred的ajax,和层层嵌套回调的ajax说拜拜

前言 在项目中,无论是维护自己的代码,还是重构他人的项目代码,看到层层嵌套,异常冗余的某个function,那时我们的内心肯定是奔溃的! 在jquery1.5版本之前,如果我们某个操作需要多个ajax异步请求成功后执行,只能在前一个ajax成功的回调函数中接着发送ajax请求,这样一来,不光代码的可读性变得异常差,而且也失去了异步的意义. jquery开发者果然在1.5版本后引入了deferred延迟对象.而jquery.ajax也基于它迎来了巨变,我们先对比下有哪些区别. 传统ajax和现代a