Javascript jQuery类返回未定义

Javascript 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

我尝试在jQuery中创建一个简单的ajax请求类。这里的问题是,在过程函数中,我可以从变量response得到响应。我返回响应,但在请求之外,它是未定义的。。我尝试了一些全局变量,但没有成功。所以现在我试着从这里得到帮助

app.js

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,我仍然看到糟糕的语法。句子以大写字母开头。