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

时间:2013-12-26 03:33:18

标签: javascript php jquery

以下是我正在处理的代码。如您所见,我创建了一个名为'my_string'的变量,默认情况下,我想调用get_result_data()函数并将任何返回数据存储在变量'my_string'上。然后,一旦用户单击$('#button'),我想显示存储的数据。但问题是,我总是得到一个不明身份的错误。

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

3 个答案:

答案 0 :(得分:2)

您的get_result_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);
    });
});

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

以这种方式工作

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