我需要为几个不同的php脚本运行多个$ .get函数,我想知道我是否可以在一个通用函数中完成所有操作并返回数据。我的计划是做一些事情:
var companyName = 'Google';
var customers = get('Customers', companyName);
var vendors = get('Vendors', companyName);
function get(table, variable){
$.get('http://www.mysite.com/phps/get'+table+'.php', {company: variable}, function(data){return data});
}
但是,这不起作用,因为它在嵌套函数中。这是可能的(很容易)还是我一次只能做一个$ .get?
答案 0 :(得分:1)
如果您使用的是jquery 1.5,$.get将返回一个jqXhr
对象,该对象实现了promise接口:
从jQuery 1.5开始,所有jQuery的Ajax方法都返回XMLHTTPRequest对象的超集。 $ .get()返回的这个jQuery XHR对象或“jqXHR”实现了Promise接口,为它提供了Promise的所有属性,方法和行为
可以这样使用:
function yourMultipleGetFunction(success, error) {
var jqXhr1 = $.get('url', data);
var jqXhr2 = $.get('url2', data2);
$.when(jqXhr1, jqXhr2).then(success, error);
}
yourMultipleGetFunction(function(data1, data2){
//handle the objects returned from the get requests
}, function(jqXHR, textStatus, errorThrown){
//something went wrong, handle the error here
});
答案 1 :(得分:1)
请记住,在Javascript函数中是一等公民,所以不是返回一个值,你可能最好发送一个函数:
var companyName = 'Google';
var customers, vendors;
get('Customers', companyName, function(data) { customers = data; });
get('Vendors', companyName, function(data) { vendors = data; });
function get(table, variable, success){
$.get('http://www.mysite.com/phps/get'+table+'.php', {company: variable}, success);
}
这是一个糟糕的例子,因为它不处理异常等。但它应该让你知道提供给你的灵活性。关键是要记住,功能是语言的基石,也是赋予它力量的基础。
如果您真的想坚持使用(我不推荐)的方法,您可以添加一个额外的功能...... (我真的不推荐)强>
var companyName = 'Google';
var customers, vendors;
get('Customers', companyName, customers);
get('Vendors', companyName, vendors);
function get(table, variable, results){
$.get('http://www.mysite.com/phps/get'+table+'.php', {company: variable}, function(data){ results = data});
}
这样做会导致您无法根据通话结果更改体验的处理方式。也许你想要一个禁用的选择框,直到调用完成并填充它,或者你想在调用失败时执行一些特殊操作。使用函数是一种更好的方法。
希望这有帮助。