2013-12-26 3 views
0

Ниже приведен код, над которым я работаю. Как вы можете видеть, я создал переменную с именем «my_string», по умолчанию я хочу вызвать функцию get_result_data() и сохранить любые возвращаемые данные в переменной «my_string». Затем, как только пользователь нажмет , я хочу отобразить сохраненные данные. Но проблема в том, что я всегда получаю неопознанную ошибку.Получить возвращаемое значение из вызова ajax внутри функции

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

@elclanrs Я так и думал бы предложил DUP вопрос при создании самого этого вопроса :( – thefourtheye

+0

почему вам нужно сохранить функцию в my_string переменного? Просто добавьте функцию внутри кнопки. get_result_data()! намного лучше – zai

+0

Это всего лишь небольшая часть всего моего проекта, мне нужно заставить это работать для определенной цели – user3135626

ответ

1

Ваша get_result_data функция ничего не возвращает, поэтому вы получаете обратно неопределенными. Вместо этого попробуйте установить my_string внутри AJAX обратного вызова:

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

Но я положил данные о возврате; – user3135626

+0

Правильно, но нет 'return' в вашей функции' get_result_data', поэтому нет ничего возвращается, когда вы его вызываете. –

+0

Тогда как бы вы отображали возвращаемые данные после нажатия кнопки? Помните, что вызов ajax все еще находится внутри функции get_result_data() – user3135626

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); 
    }); 
}); 
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; 
} 
Смежные вопросы