2012-07-09 50 views
0

我试图用一些函数调用返回的数据来触发一个Ajax请求,并且据我所知,Ajax调用并没有等待为我的函数调用返回。等待一个函数在触发jQuery Ajax请求之前返回一个值

我打电话给getSelectedMessages,在发出一个由getSelectedMessages返回的值的数组的Ajax请求之前,获取可变数量的复选框的值。

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() } 
}); 

我做搜索周围一点点,所有我打开如何回复一个电话和它的答案。

+0

了解这一'HTTP:// api.jquery.com/ajaxStart /',这应probaly做的工作。 – 2012-07-09 08:22:34

+1

它似乎应该可以正常工作。 'data'对象在Ajax请求之前显然被初始化。 – VisioN 2012-07-09 08:23:06

+0

当你打电话给ajax – muthu 2012-07-09 08:23:07

回答

1

使用

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

正是我需要的,谢谢! – 27percent 2012-07-09 09:02:22

0

呼叫getSelectedMessages()在jquery(?)的ajax函数之外

0

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

如果你连接一个字符串与值,并让它自己查询字符串参数它应该工作。 我假设你想发送类似于?var [] = something & var [] = somethingelse的东西到服务器,所以它以PHP的阵列结束? 比你必须在getSelectedMessages函数中自己建立字符串。

希望它能帮助, PM5544

+0

该功能以正确的格式返回数据,我已经明确地定义一个局部变量,并具有* getSelectedMessages *设置它的值,然后传递到这一点Ajax请求 – 27percent 2012-07-09 09:00:55

+0

啊真的,我错过了{:returnedValue IDS}证实了这一点。 做了一些更多的测试,它确实返回所有权。 – PM5544 2012-07-09 17:52:08

相关问题