等待函数在触发jQuery Ajax请求之前返回一个值

时间:2012-07-09 08:18:24

标签: javascript ajax jquery return

我正在尝试使用函数调用返回的一些数据来触发Ajax请求,据我所知,Ajax调用不等待我的函数调用返回。

我在调用带有getSelectedMessages返回值的数组的Ajax请求之前调用getSelectedMessages来获取可变数量的复选框的值。

getSelectedMessages看起来像这样:

var getSelectedMessages = function() {
    var selected = [];
    $('input:checkbox[name=multipleops]:checked').each(function() {
      selected.push($(this).attr('value'));
    });
return selected;
}

调用它的Ajax请求如下所示:

$.ajax({
   type: "POST",
   url: "/api/messages/",
   data: { ids: getSelectedMessages(), folder: folder },
   cache: false,
   success: function(){ location.reload() }
});

我已经做了一些搜索,所有我出现的都是关于如何从调用返回值的答案。< / p>

3 个答案:

答案 0 :(得分:1)

使用

带有ajax的

beforeSend属性

var getSelectedMessages = function() {
    var selected = [];
    $('input:checkbox[name=multipleops]:checked').each(function() {
      selected.push($(this).attr('value'));
    });
return selected;
}

 $.ajax({
   type: "POST",
   url: "/api/messages/",
   beforeSend : function () { return jQuery.isEmptyObject(getSelectedMessages);  }
   data: { ids: getSelectedMessages(), folder: folder },
   cache: false,
   success: function(){ location.reload() }
});

参考

beforeSend
isEmptyObject

答案 1 :(得分:0)

在jquery(?)

的ajax函数之外调用getSelectedMessages()

答案 2 :(得分:0)

在发送请求之前执行该功能。 真正的问题是getSelectedMessaged()返回一个数组。 在jQuery的内部序列化后,这会导致undefined = undefined。 这会被$ .ajax()忽略,所以看起来它并没有发送你的变量,但它忽略了它们,因为它们是未定义的。

如果您将字符串与值连接起来并使其成为查询字符串参数,那么它应该可以正常工作。 我假设您想将类似?var [] = something&amp; var [] = somethingelse的内容发送到服务器,因此它最终在PHP中作为数组? 你必须自己在getSelectedMessages函数中建立字符串。

希望它有所帮助, PM5544