0

我有这个解析 JSON 的函数。当我在 .live 函数中调用它时,我变得不确定。

这是我创建的功能,

function getAbc() {
                    var details;
                    var id = $(this).attr('data-id');
                    $.ajax({
                        url : '/index.php/data',
                        type : 'GET',
                        data : 'persons[]=' + id,
                        success : function(data, textStatus, xhr) {
                            details = JSON.parse(data);
                        },
                    });
                    return details;
                }

我只是这样调用,getAbc()。有什么方法可以访问函数中的详细信息变量吗?

4

3 回答 3

2

使用延续传递风格。本质上$.ajax是异步的。

function getAbc(callback) {
    var details;
    var id = $(this).attr('data-id');
    $.ajax({
       url : '/index.php/data',
       type : 'GET',
       data : 'persons[]=' + id,
       success : function(data, textStatus, xhr) {
           details = JSON.parse(data);
           callback(details);
       }
    });
}

function getAbc(function (details) {
    console.log(details);
});
于 2012-12-19T19:14:00.207 回答
1

那是因为异步ajax发生。这意味着在调用之前返回,因为请求是通过网络进行的。您需要在回调中使用,而不是在方法返回后使用。或者,调用另一个使用详细信息的方法,并传递给该方法。getAbc successdetailssuccessgetAbcsuccessdetails

于 2012-12-19T19:10:16.297 回答
1

这是由于 AJAX 的工作方式。

AJAX 请求是异步的,这意味着它们不会立即返回。

当您进行 AJAX 调用时,会发出一个在未知时间完成的请求。

您可以使用回调函数来处理结果。

回调函数是在收到来自 AJAX 请求的响应之后执行的函数。

您可以指定一个回调函数并将其传递给您的 AJAX 调用。

于 2012-12-19T19:10:20.937 回答