JQuery getJSon 嵌套调用不起作用
我需要通过 JQuery 的 getJSON 函数执行两个 AJAX 调用。
问题是,一旦执行其中一个调用,我需要立即调用第二个 getJSON 函数(因为我需要第一个调用的结果作为第二个调用中的参数)。
我的代码如下所示:
$.getJSON("/Traslados/ObtenerCedulas", { Param1: $("#Param1").val(), Param2: $("#Param2").val() }, function (j) {
$("#Result1").val(j);
$.getJSON("/Traslados/ObtenerLogins", { Param3: $("#Param3").val(), Param4: $("#Result1").val() },
function (k) {
alert(k);
$("#Result2").val(k);
});
});
问题是,虽然第二个调用正在正确执行并给出了预期结果(我使用 Firebug 的控制台对此进行了调试),但它不会触发警报,更糟糕的是,它没有设置 k
值添加到我的 Result2
输入字段。
发生什么事了?
I need to perform two AJAX calls through JQuery's getJSON
function.
The thing is that, once one of the calls is performed I need to immediately call the second getJSON
function (because I need the result of the first call as a parameter in the second call).
My code looks like this:
$.getJSON("/Traslados/ObtenerCedulas", { Param1: $("#Param1").val(), Param2: $("#Param2").val() }, function (j) {
$("#Result1").val(j);
$.getJSON("/Traslados/ObtenerLogins", { Param3: $("#Param3").val(), Param4: $("#Result1").val() },
function (k) {
alert(k);
$("#Result2").val(k);
});
});
The problem is, although the second call is being performed correctly and is given the expected result (I debugged this using Firebug's console), it doesn't trigger the alert and even worst, it doesnt set the k
value to my Result2
input field.
What's happening?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我在这里看到的一个问题是,无论第一个调用成功还是失败,第二个 getJSON 调用都会发生,并且从您发布的代码中无法知道 #Result1 是否实际上设置正确。
如果您查看 getJSON API 文档:
http://api.jquery.com/jQuery.getJSON/
它将向您展示如何构建第一个 getJSON,以便您进行一些完成/失败/始终类型的响应处理。
如果没记错的话,这并不是你的全部问题。过去,当我需要执行必须按顺序发生的 ajax 调用时,我会使用对调用进行排队和出队。
排队的简单示例
One thing I can see as a problem here is that your second getJSON call is happening whether the first call succeeds or fails and from the code you've posted there's no way to know whether #Result1 was actually set correctly.
If you look at the getJSON API doc:
http://api.jquery.com/jQuery.getJSON/
It will show you how to structure your 1st getJSON so that you have some done/failure/always kinds of response handlings.
If memory serves, this is not your whole problem, though. When I've needed to do ajax calls that must happen in order, in the past, I've used queuing and dequeing my calls.
A quick example of queuing