業務場景,
三層回圈嵌套
指定一個省,先獲取該省的全部地級市,再獲取每個市下的縣區,最后獲取每個縣區下的學校,實際上得到全省的學校資料
目標要求:按照先獲取完一個市的,再獲取下一個市的,當本市的沒有完成,下一個市不開始,
但按如下代碼,最后能全部獲取,但是發現上一市沒有讀完,下一個市就開始了,償試了用done(),then()都沒有解決,問題在哪里?
求大神不吝賜教
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="https://bbs.csdn.net/topics/css/control.css" rel="stylesheet" />
<style>
#btnGet, #btnGetAll {
width: 150px;
}
</style>
<script src="https://bbs.csdn.net/topics/js/jquery.2.1.4.min.js"></script>
</head>
<body>
<select id="prov" style="height: 30px;">
<option value="https://bbs.csdn.net/topics/0">直轄市</option>
<option value="https://bbs.csdn.net/topics/1">山東</option>
<option value="https://bbs.csdn.net/topics/7">河北</option>
<option value="https://bbs.csdn.net/topics/10">陜西</option>
<option value="https://bbs.csdn.net/topics/12">安徽</option>
<option value="https://bbs.csdn.net/topics/90">山西</option>
<option value="https://bbs.csdn.net/topics/91">內蒙古</option>
<option value="https://bbs.csdn.net/topics/92">遼寧</option>
<option value="https://bbs.csdn.net/topics/93">吉林</option>
<option value="https://bbs.csdn.net/topics/94">黑龍江</option>
<option value="https://bbs.csdn.net/topics/96">江蘇</option>
<option value="https://bbs.csdn.net/topics/98">浙江</option>
<option value="https://bbs.csdn.net/topics/100">江西</option>
<option value="https://bbs.csdn.net/topics/101">河南</option>
<option value="https://bbs.csdn.net/topics/102">湖北</option>
<option value="https://bbs.csdn.net/topics/103">湖南</option>
<option value="https://bbs.csdn.net/topics/104">廣東</option>
<option value="https://bbs.csdn.net/topics/105">廣西</option>
<option value="https://bbs.csdn.net/topics/106">海南</option>
<option value="https://bbs.csdn.net/topics/108">四川</option>
<option value="https://bbs.csdn.net/topics/109">貴州</option>
<option value="https://bbs.csdn.net/topics/110">云南</option>
<option value="https://bbs.csdn.net/topics/111">西藏</option>
<option value="https://bbs.csdn.net/topics/112">甘肅</option>
<option value="https://bbs.csdn.net/topics/113">青海</option>
<option value="https://bbs.csdn.net/topics/114">寧夏</option>
<option value="https://bbs.csdn.net/topics/115">新疆</option>
<option value="https://bbs.csdn.net/topics/642">福建</option>
</select>
<input id="btnGet" type="button" value="https://bbs.csdn.net/topics/獲取當前省份" class="ManagerButton" onclick="Get();" />
<input id="btnGetAll" type="button" value="https://bbs.csdn.net/topics/獲取全部省份" class="ManagerButton" />
<br />
<span id="ict" class="spaninfo"></span>
<br />
<span id="icn" class="spaninfo"></span>
<br />
<span id="ics" class="spaninfo"></span>
<script type="text/javascript">
//獲取全部的市串列
function Get()
{
var procode = $("#prov").val();;
var proname = $("#prov option:selected").text();
$.ajax({
type: "GET",
url: "ajax/index.aspx?m=list&procode=" + procode + "&proname=" + proname,
dataType: "xml",
success: function (cityxml)
{
GetCountry(cityxml, 0);
}
});
}
//獲取縣區串列
function GetCountry(cityxml, index)
{
var ctCnt = $(cityxml).find("T").length;
var code = $(cityxml).find("T").eq(index).find("code").text();
var name = $(cityxml).find("T").eq(index).find("name").text();
if (index >= ctCnt) return;
$("#ict").text("共" + ctCnt + "個市,當前是第" + (index + 1) + "個:" + name);
$.ajax({
type: "GET",
url: "ajax/index.aspx?m=listcountry&code=" + code,
dataType: "xml",
success: function (countryxml)
{
//獲取當前縣區的學校
GetSchool(countryxml, 0);
}
}).then(function ()
{
index++;
GetCountry(cityxml, index);
});
}
//獲取學校串列
function GetSchool(countryxml, index)
{
var ctCnt = $(countryxml).find("T").length;
var code = $(countryxml).find("T").eq(index).find("code").text();
var name = $(countryxml).find("T").eq(index).find("name").text();
if (index >= ctCnt) return;
$("#icn").text("共" + ctCnt + "個縣區,當前是第" + (index + 1) + "個:" + name);
$.ajax({
type: "GET",
url: "ajax/index.aspx?m=listschool&code=" + code,
dataType: "xml",
success: function (xml)
{
//獲取當前縣區的學校
$("#ics").text("當前區共" + $(xml).text() + "個學校!");
}
}).then(function ()
{
index++;
GetSchool(countryxml, index)
});
}
</script>
</body>
</html>
uj5u.com熱心網友回復:
先不用then,試試ajax同步執行能不能滿足你的需求:async:falseuj5u.com熱心網友回復:
把所有資料, 都打包到一個json檔案中, 直接下載了, 前端用這個資料做下三層回圈嵌套。 每次都請求多麻煩。uj5u.com熱心網友回復:
幾百年不變一次的資料,直接做成js參考,連ajax都不要uj5u.com熱心網友回復:
正解,寫一個方法,按照規格的格式輸出資料,添加到js里面
uj5u.com熱心網友回復:
這個程式就是維護這個資料庫的,不斷的在更新,所以有這方面的業務需要轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/96928.html
標籤:Ajax
上一篇:easyui jquery 報 Method com/mysql/jdbc/PreparedStatement.setBinaryStream(ILjava/
下一篇:求解
