Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查已发送多个$.post并且已在页面上获取结果_Javascript_Jquery - Fatal编程技术网

Javascript 如何检查已发送多个$.post并且已在页面上获取结果

Javascript 如何检查已发送多个$.post并且已在页面上获取结果,javascript,jquery,Javascript,Jquery,在我的javascript代码中,当有人更改选项并单击Go时。它是多个项目的更改属性。我看到每个项目的保存按钮和编辑按钮 因此,我在更改选择后手动单击按钮,然后单击Go for (var i = 0; i < checked.length; i++) { var cur = checked[i]; $(cur).parents('tr').find('.transaction-category-wrapper .select2').val(catId);

在我的javascript代码中,当有人更改选项并单击Go时。它是多个项目的更改属性。我看到每个项目的保存按钮和编辑按钮

因此,我在更改选择后手动单击按钮,然后单击Go

for (var i = 0; i < checked.length; i++) {
        var cur = checked[i];
        $(cur).parents('tr').find('.transaction-category-wrapper .select2').val(catId);
        $(cur).parents('tr').find('.transaction-verify-wrapper .btn-save').click();
    }

您可以使用
。然后
处理AJAX请求的成功和失败案例:

$.post("your_url", { ... })
  .then(function() {
    // If succeeded
  }, function() {
    // If failed
  });
.post
返回一个jQuery对象,该对象可以由处理程序响应。
.then的第一个参数被视为成功处理程序,第二个参数被视为失败处理程序

在多个AJAX调用的情况下,您可以使用在所有AJAX调用完成后执行操作

$.when($.post( ... ), $.post( ... ))
  .then(function() {
    // If all AJAX calls succeed
  }, function() {
    // If any of the call fails
  });

您可以使用
。然后
处理AJAX请求的成功和失败案例:

$.post("your_url", { ... })
  .then(function() {
    // If succeeded
  }, function() {
    // If failed
  });
.post
返回一个jQuery对象,该对象可以由处理程序响应。
.then的第一个参数被视为成功处理程序,第二个参数被视为失败处理程序

在多个AJAX调用的情况下,您可以使用在所有AJAX调用完成后执行操作

$.when($.post( ... ), $.post( ... ))
  .then(function() {
    // If all AJAX calls succeed
  }, function() {
    // If any of the call fails
  });

因为每次点击都会生成一个post请求。您需要跟踪阵列中的所有这些请求,然后等待它们得到解决。因此,您的代码应该如下所示:

var requests = [];
$(document).on('click', '.btn-save', function () {
             // val logic
            requests.push($.post("/Entries/AddEntries"));
        });
Promise.all(requests).then((data) => {do something});

因为每次点击都会生成一个post请求。您需要跟踪阵列中的所有这些请求,然后等待它们得到解决。因此,您的代码应该如下所示:

var requests = [];
$(document).on('click', '.btn-save', function () {
             // val logic
            requests.push($.post("/Entries/AddEntries"));
        });
Promise.all(requests).then((data) => {do something});


@31P当post请求发送到另一个jquery事件时,我如何才能在函数中得到承诺,我想等到所有post请求得到响应。您已经在使用
success
回调,这正是您要求的“让我知道请求已完成,响应已收到”。所以问题是什么还不清楚。如果要检查此之外的请求,请使用
$.post
返回的
jqXHR.readyState
。@freedomn-m单击“保存”时的“保存工作”按钮。我有一个很大的下拉列表在上面,你只需选择和检查项目,并按下保存。这应该点击save,每次点击btn save>request gone>response come,我都会尝试刷新页面。为什么不使用ajax来“刷新”页面呢?那么你就不需要等待/中断你的用户体验了。用户单击第一次保存。。页面等待。。用户需要时间选择第二个选项,并将要单击“保存…”。。。第一次完成。。。整页重新加载重置第二个选项。。。用户感到恼火。编辑更有意义,谢谢。@31P如果post请求发送另一个jquery事件,我如何在函数中得到承诺,我想等到所有post请求都得到响应。您已经在使用
成功
回调,这正是您所要求的“让我知道请求已完成,并已收到回复“。所以不清楚问题是什么。如果要检查此之外的请求,请使用
$.post
返回的
jqXHR.readyState
。@freedomn-m单击“保存”时的“保存工作”按钮。我有一个很大的下拉列表在上面,你只需选择和检查项目,并按下保存。这应该点击save,每次点击btn save>request gone>response come,我都会尝试刷新页面。为什么不使用ajax来“刷新”页面呢?那么你就不需要等待/中断你的用户体验了。用户单击第一次保存。。页面等待。。用户需要时间选择第二个选项,并将要单击“保存…”。。。第一次完成。。。整页重新加载重置第二个选项。。。用户很恼火。编辑更有意义,谢谢。我单击按钮,然后单击激发事件,所以所有$.post都是分开的。我如何像给定的代码一样加入它。@AnirudhaGupta-你能发布实际执行此操作的代码吗?请检查帖子。@AnirudhaGupta-这样你就可以在
$中编写
然后
处理程序了。帖子
。一旦AJAX调用完成,它就会被调用。我单击按钮,然后单击激发事件,所以所有$.post都是分开的。我如何像给定的代码一样加入它。@AnirudhaGupta-你能发布实际执行此操作的代码吗?请检查帖子。@AnirudhaGupta-这样你就可以在
$中编写
然后
处理程序了。帖子
。一旦AJAX调用完成,它将被调用。每单击一个按钮生成一个seprate$。请检查另一个按钮的评论answer@AnirudhaGupta请更新您的问题,因为没有(明显)提到多个
$。请在问题中发布
请求(仅提及多个按钮,但不需要所有按钮的响应)。我们不应该要求审查每个答案上的每个评论。@ApoorvJoshi我从javascript函数中手动单击了它,我如何在该循环中执行同样的操作。每次单击按钮都会生成一个seprate$。请检查另一个答案上的评论answer@AnirudhaGupta请更新您的问题,因为没有(明显的)提及多个
$。在问题中发布
请求(仅提及多个按钮,但不需要所有按钮的响应)。我们不应该查看每个答案上的每个注释。@ApoorvJoshi我从javascript函数中手动单击它,我如何在该循环中执行同样的操作。