Javascript jQuery类返回未定义
我尝试在jQuery中创建一个简单的ajax请求类。这里的问题是,在过程函数中,我可以从变量response得到响应。我返回响应,但在请求之外,它是未定义的。。我尝试了一些全局变量,但没有成功。所以现在我试着从这里得到帮助 app.jsJavascript jQuery类返回未定义,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我尝试在jQuery中创建一个简单的ajax请求类。这里的问题是,在过程函数中,我可以从变量response得到响应。我返回响应,但在请求之外,它是未定义的。。我尝试了一些全局变量,但没有成功。所以现在我试着从这里得到帮助 app.js var AjaxRequest = Class.extend({ init: function(url) { this.url = url; }, process: function() { var
var AjaxRequest = Class.extend({
init: function(url) {
this.url = url;
},
process: function() {
var response;
$.get("http://test.dec/ajax.php", function(data) {
var obj = jQuery.parseJSON( data);
response = obj;
console.log(response); // Get correct output
return response;
});
}
});
$('#test').on('click', function() {
var request = new AjaxRequest('ajax.php');
console.log(request.process()); // Get undefined
});
PHP文件ajax.PHP
<?php
$json = json_encode(['test' => 'test123']);
echo $json;
?>
问题在于ajax请求是异步的。您要做的可能是将回调传递给进程,这样当进程完成时,它将调用函数继续 以下是一个例子:
var AjaxRequest = Class.extend({
init: function(url) {
this.url = url;
},
process: function(callback) {
var response;
$.get("http://test.dec/ajax.php", function(data) {
var obj = jQuery.parseJSON( data);
response = obj;
console.log(response); // Get correct output
callback(response);
});
}
});
$('#test').on('click', function() {
var request = new AjaxRequest('ajax.php');
request.process(function(data) { console.log(data); });
});
请通读异步调用的工作原理。请尝试以下方法:
$.ajax({
url: 'your url',
global: false,
type: 'POST',
data: {},
async: false,
success: function() {}
});
我知道你不懂异步编程。这是正确的@StephenSarcsamKamenar,这就是为什么我在这里要指出正确的方向!谢谢你,这很有魅力,我对此一无所知。我肯定会阅读更多关于异步的内容。干杯,易大哥,你的语法会有点问题。asynchronouz不是一个词。哦,对不起,我的意思是AsyncAJAX不能异步也不是地道的英语。那又怎样?那你的问题是什么?我的英语还是你的代码?我的问题是两件事。1,你没有像他问的那样向海报展示如何从函数返回数据,我在你的代码中没有看到任何返回语句,2,我仍然看到糟糕的语法。句子以大写字母开头。