jQuery类返回undefined

时间:2015-03-29 04:41:29

标签: javascript php jquery ajax

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

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;

?>

2 个答案:

答案 0 :(得分:0)

问题是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); });
});

请仔细阅读this,了解asynchronus调用的工作原理。

答案 1 :(得分:0)

请试试这个:

$.ajax({
            url: 'your url',
            global: false,
            type: 'POST',
            data: {},
            async: false,
            success: function() {}
        });