Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从函数内的ajax调用获取返回值_Javascript_Php_Jquery - Fatal编程技术网

Javascript 从函数内的ajax调用获取返回值

Javascript 从函数内的ajax调用获取返回值,javascript,php,jquery,Javascript,Php,Jquery,下面是我正在编写的代码。如您所见,我创建了一个名为“my_string”的变量,作为默认值,我希望调用get_result_data()函数,并在变量“my_string”上存储任何返回数据。然后,一旦用户单击$(“#按钮”),我想显示存储的数据。但问题是,我总是遇到一个无法识别的错误 function get_result_data(){ $.ajax({ type: 'POST', url: 'ajax/get_result.php' }).d

下面是我正在编写的代码。如您所见,我创建了一个名为“my_string”的变量,作为默认值,我希望调用get_result_data()函数,并在变量“my_string”上存储任何返回数据。然后,一旦用户单击
$(“#按钮”)
,我想显示存储的数据。但问题是,我总是遇到一个无法识别的错误

function get_result_data(){
    $.ajax({
        type: 'POST',
        url: 'ajax/get_result.php'
    }).done(function(data){
        return data;
    });
}

var my_string = get_result_data();


$('#button').click(function(){
    alert(my_string);
});

您的
get\u result\u data
函数不返回任何内容,这就是为什么返回未定义的内容。相反,请尝试在ajax回调中设置
my_string

var my_string;
function get_result_data(){
    $.ajax({
        type: 'POST',
        url: 'ajax/get_result.php'
    }).done(function(data){
        my_string = data;
    });
}

$('#button').click(function(){
    // MY_STRING MIGHT BE UNDEFINED
    alert(my_string);
});
也许更好的方法是:

var response = $.ajax({
    type: 'POST',
    url: 'ajax/get_result.php'
});

$('#button').click(function(){
    response.done(function (data) {
        alert(data);
    });
});

您应该使用回调方法来执行此操作

function get_result_data(callback){
    $.ajax({
        type: 'POST',
        url: 'ajax/get_result.php'
    }).done(function(data){
        callback(data);
    });
}

get_result_data(function(my_string){
    $('#button').click(function(){
        alert(my_string);
    });
});
通过这种方式,工作

function get_result_data(){
    var res;
    $.ajax({
        type: 'POST',
        url: '/kuke/userBlog/getTudouVideoInf',
        async:false,
        data : {
            "temp" : "1",
            "video_id" : "111"
        },
        error : function(textStatus,errorThrown) {
            alert("textStatus:"+textStatus+"   errorThrown:"+errorThrown);
        }
    }).done(function(data){
        res=data;

    });
    return res;
}

@elclanrs我也这么认为,在创建这个问题时,我会提出dup问题:(为什么需要将函数存储在my_string变量中?只需将函数放在按钮click.get_result_data()中即可)!更好这只是我整个项目的一小部分,我需要让它为特定目的工作,但是我放了返回数据;对,但是在你的
get\u result\u data
函数中没有
return
语句,所以当你调用它时不会返回任何内容。那么一旦点击按钮,你将如何显示返回数据d?记住ajax调用仍然在get_result_data()函数中。遵循重复项,您的问题将得到非常详细的解释。在ajax中不返回内容,而是使用回调。@user3135626记住ajax中的第一个A代表异步。
get_result_data()
发送AJAX请求,然后返回而不等待响应。
.done()
函数稍后在响应到达时调用。