【发布时间】:2011-08-09 17:20:24
【问题描述】:
我正在尝试进行嵌套的 ajax 调用,但迭代不起作用:假设我有 2 家公司,公司编号 1 有 2 个联系人,公司编号 2 有 3 个联系人。我不知道为什么,但下面给出的代码显示了两个公司名称,后跟五个联系人姓名:它不是嵌套的....
<script type="text/javascript">
$(function () {
$('#searchbutton').bind('click', function (event) {
$("#result > h4, #result > p").remove();
$("<p>Loading...</p>").appendTo($("#result"));
$.ajax({
type: "GET",
dataType: "jsonp",
cache: true,
url: "http://localhost/archilab/archilabdirectory.svc/",
data: ("tag=" + $("#searchstring").val()),
success: function (companies) {
$("#result > p").remove();
$.each(companies, function () {
var outer = this;
$("<h4>", { text: outer.Name + " (" + outer.Perimeter + ")" }).hide().appendTo($("#result")).show(4000, function () {
$.ajax({
type: "GET",
dataType: "jsonp",
cache: true,
url: "http://localhost/archilab/archilabdirectory.svc/" + outer.Name + "/contacts/",
success: function (contacts) {
$(contacts).each(function () {
$("<p>", { text: this.FirstName + " " + this.LastName }).hide().appendTo($("#result")).show();
});
}
})
});
});
}
});
})
});
</script>
【问题讨论】:
-
与其发出多个 ajax 调用,不如将姓名和联系人数据合并到一个 JSON 响应中,用于单个 ajax 请求?
-
如果出于某种奇怪的原因需要两个,请写函数。始终编码 DRY(不要重复自己)。每当您可以将代码侧向一边看到山时,您就需要重构。
标签: jquery ajax nested jsonp each