我正在尝试使用函数调用返回的一些数据来触发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>
答案 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() }
});
参考
答案 1 :(得分:0)
在jquery(?)
的ajax函数之外调用getSelectedMessages()答案 2 :(得分:0)
在发送请求之前执行该功能。 真正的问题是getSelectedMessaged()返回一个数组。 在jQuery的内部序列化后,这会导致undefined = undefined。 这会被$ .ajax()忽略,所以看起来它并没有发送你的变量,但它忽略了它们,因为它们是未定义的。
如果您将字符串与值连接起来并使其成为查询字符串参数,那么它应该可以正常工作。 我假设您想将类似?var [] = something&amp; var [] = somethingelse的内容发送到服务器,因此它最终在PHP中作为数组? 你必须自己在getSelectedMessages函数中建立字符串。
希望它有所帮助, PM5544