5

我正在尝试使用 ajax 从我的服务器获取信息。页面 xxx.php 是一个只有 123 的页面。但是,当我想返回该页面的内容时,它返回 null。

function myFunct(){
    $.ajax({
        url: 'xxx.php',
        success: function(data) {
            return data;
        }
    });
}

var data = myFunct(); //nothing.
4

5 回答 5

8

请注意,ajax 是“异步的”。因此,当 myFunct() 完成执行时,可能不会收到对服务器调用的响应。您可以将处理来自服务器调用的数据的逻辑放在 ajax 的“成功”中。

function myFunct(){
    $.ajax({
        url: 'xxx.php',
        success: function(data) {
           // processMyData(data);
        }
    });
}
于 2012-09-30T16:21:44.477 回答
5

AJAX 是异步的。

只有在其余代码完成运行的某个时间,您才会收到响应。

相反,您需要使用回调返回值,就像这样$.ajax做:

function myFunct(callback){
    $.ajax({
        url: 'xxx.php',
        success: function(data) {
            // Do something to the data...
            callback(data);
        }
    });
}

myFunct(function(result) {
    ...
});
于 2012-09-30T16:27:19.497 回答
1

您可以在同步模式下使用(尽管建议使用异步回调以避免“冻结”代码)。

使用同步:

function myFunct(callback){
   return $.ajax({
        url: 'xxx.php',
        async: false
    }).responseText;
}
于 2012-09-30T16:37:21.727 回答
0

尝试使用 ajax 错误处理,检查您的响应

function myFunct(){
$.ajax({
    url: 'xxx.php',
    success: function(data) {
        alert(data);
    },
    error:  function(jqXHR, textStatus){
       alert("Status: "+ jqXHR.status);
       alert("textStatus: " + textStatus);
    }

});

}

于 2012-09-30T16:31:46.223 回答
0
var globalVal;

    function myFunct(){
        $.ajax({
            url: 'xxx.php',
            success: function(data) {
                alert(data); // you can see you data
                globalVal= data;
            }
        });
    }

// 它是对服务器的响应,响应稍后执行,您分配值

myFunct(); //nothing.
alert(globalVal) 
于 2012-09-30T16:20:21.747 回答