0

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

getSelectedMessages使用由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() }
});

我已经做了一些搜索,我发现的只是关于如何调用中返回值并返回它的答案。

4

3 回答 3

1

利用

beforeSend带有ajax的属性

尝试

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

于 2012-07-09T08:22:01.277 回答
0

在 jquery (?) 的 ajax 函数之外调用 getSelectedMessages()

于 2012-07-09T08:22:08.250 回答
0

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

如果您将字符串与值连接起来并自己将其设为查询字符串参数,则它应该可以工作。我假设你想向服务器发送类似 ?var[]=something&var[]=somethingelse 的东西,所以它最终在 PHP 中作为一个数组?比您必须在 getSelectedMessages 函数中自己构建字符串。

希望对您有所帮助,PM5544

于 2012-07-09T08:39:50.753 回答