Php 将从ajax调用获取的数据返回给另一个函数
所以我有这个javascript函数,它发送一个ajax请求,从php变量中获取一个值 该函数如下所示:Php 将从ajax调用获取的数据返回给另一个函数,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,所以我有这个javascript函数,它发送一个ajax请求,从php变量中获取一个值 该函数如下所示: function get_cart_limit() { $.ajax({ url: '/w2w/ajax/', data: { _action: 'get_cart_limit' }, type: 'post', timeout: 10000, success: function(output) { var ca
function get_cart_limit() {
$.ajax({
url: '/w2w/ajax/',
data: {
_action: 'get_cart_limit'
},
type: 'post',
timeout: 10000,
success: function(output) {
var cartlimit = output;
alert(cartlimit); // this gives me the correct value.
return cartlimit;
},
error: function(output){
}
});
}
当我从另一个函数调用此函数时,如下所示:
var cartlimit = get_cart_limit();
我的变量“cartlimit”未定义
所以ajax调用是有效的,但是为什么我不能将值返回给另一个函数呢?
对我来说,我的大脑工作不正常
干杯 使用全局范围声明此cartlimit。在函数启动前重新标记此项
var cartlimit;
function get_cart_limit() {
$.ajax({
...................
这里,只有在ajax函数成功后,才会声明cartlimit
但在成功之前,可能需要执行其他脚本。因此它将变得未定义您可以像这样将输出数据传递给指定的函数
var cartlimit = get_cart_limit(output);
如果更改cartlimit变量的范围并禁用异步请求,get\u cart\u limit()应返回正确的值
function get_cart_limit() {
var cartlimit;
$.ajax({
url: '/w2w/ajax/',
data: {
_action: 'get_cart_limit'
},
type: 'post',
timeout: 10000,
async: false,
success: function(output) {
cartlimit = output;
},
error: function(output){
}
});
return cartlimit;
}
变量
cart\u limit
仅在AJAX请求成功终止后设置
为什么?
get\u cart\u limit()
在服务器返回实际答案之前结束success:function(output){/*…*/}
的匿名函数cart\u limit
的函数,则会得到一个未定义的值
即使在success
函数中执行return语句,它也是与get\u cart\u limit()不同的函数,并且在不同的时间执行,因此将返回值赋给任何变量都不会获得所需的效果
解决这个问题的一个方法是让匿名成功函数调用需要cart\u limit
的函数
function get_cart_limit() {
$.ajax({
url: '/w2w/ajax/',
data: {
_action: 'get_cart_limit'
},
type: 'post',
timeout: 10000,
success: function(output) {
var cartlimit = output;
alert(cartlimit); // this gives me the correct value.
function_that_needs_cart_limit();
},
error: function(output){
}
});
}
由于ajax调用是异步的,所以未定义变量是正常的。是的,这是可行的,但您将锁定浏览器,直到请求完成。