doujing6436 2015-03-29 04:41
浏览 47
已采纳

jQuery类返回undefined [重复]

This question already has an answer here:

I try to create a simple ajax request class in jQuery. The problem I have here is that in the process function I can get the response from variable response . I return response but outside the request it is undefined .. I tried with global variables of some sorts, didn't work out. So now I try to get help from here.

The 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
});

The PHP ajax.php

<?php

$json = json_encode(['test' => 'test123']);
echo $json;

?>
</div>
  • 写回答

2条回答 默认 最新

  • dongshan4878 2015-03-29 04:47
    关注

    The problem is that ajax requests are asynchronous. What you want to do maybe is pass in a callback to process so when it completes, it will call the function to continue.

    Here is an example:

    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); });
    });
    

    Please have a read through this on how asynchronus calls work.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 ue5运行的通道视频都会有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数