Javascript 数据为';s从函数返回的值未定义

Javascript 数据为';s从函数返回的值未定义,javascript,jquery,ajax,asynchronous,return,Javascript,Jquery,Ajax,Asynchronous,Return,我在将数据从ajax返回给调用方函数时遇到问题。当我在控制台上注销时,它是未定义的 我相信我的问题是由于js是异步的,当我在控制台上记录数据时,它还没有准备好。我能做些什么来解决它 FooFunction: function(userInput){ var fooData = FooFunction2(userInput); console.log(fooData); // <--- undefined }, FooFunction2: function(use

我在将数据从ajax返回给调用方函数时遇到问题。当我在控制台上注销时,它是未定义的

我相信我的问题是由于js是异步的,当我在控制台上记录数据时,它还没有准备好。我能做些什么来解决它

FooFunction: function(userInput){

    var fooData = FooFunction2(userInput);
    console.log(fooData);     // <--- undefined
},

FooFunction2: function(userInput) {

    $.ajax({
         url:'./php/test.php',
         type:'post',
         dataType:'json',
         data:{ 
             fooData: userInput
         },
         success:function(data) {
             ...manipulating the data...

             console.log(manipulatedData);    // <--- ['foo', 'foo2'];
             return manipulatedData;
         }
    });
},
FooFunction:function(用户输入){
var fooData=fooofunction2(用户输入);

console.log(fooData);//
fooofunction2
是对象使用的属性
this.fooofunction2

您不能从异步方法返回。请使ajax调用同步或proivde回调

FooFunction: function(userInput){

    var fooData = this.FooFunction2(userInput);
    console.log(fooData);     // <--- undefined
},
FooFunction:function(用户输入){
var fooData=this.fooofunction2(userInput);

console.log(fooData);//
fooofunction2
是对象使用的属性
this.fooofunction2

您不能从异步方法返回。请使ajax调用同步或proivde回调

FooFunction: function(userInput){

    var fooData = this.FooFunction2(userInput);
    console.log(fooData);     // <--- undefined
},
FooFunction:function(用户输入){
var fooData=this.fooofunction2(userInput);

console.log(fooData);//ajax调用是异步的,因此返回将不起作用。请将代码更改为使用在ajax调用完成时调用的回调

我更改了您的代码以实现此目的:

FooFunction: function(userInput){
    var callbackfunc = function(ajaxData)
    {
        console.log(ajaxData); //ajax is complete!
    };

    this.FooFunction2(userInput, callbackfunc);
},

FooFunction2: function(userInput, callbackfunc) {

    $.ajax({
         url:'./php/test.php',
         type:'post',
         dataType:'json',
         data:{ 
             fooData: userInput
         },
         success:function(data) {
             ...manipulating the data...

             console.log(manipulatedData);    // <--- ['foo', 'foo2'];
             callbackfunc(manipulatedData);
         }
    });
},
FooFunction:function(用户输入){
var callbackfunc=函数(ajaxData)
{
console.log(ajaxData);//ajax完成了!
};
this.FooFunction2(userInput,callbackfunc);
},
FooFunction2:函数(userInput、callbackfunc){
$.ajax({
url:“./php/test.php”,
类型:'post',
数据类型:'json',
数据:{
fooData:userInput
},
成功:功能(数据){
…操纵数据。。。

console.log(manipulatedData);//ajax调用是异步的,因此返回将不起作用。请将代码更改为使用在ajax调用完成时调用的回调

我更改了您的代码以实现此目的:

FooFunction: function(userInput){
    var callbackfunc = function(ajaxData)
    {
        console.log(ajaxData); //ajax is complete!
    };

    this.FooFunction2(userInput, callbackfunc);
},

FooFunction2: function(userInput, callbackfunc) {

    $.ajax({
         url:'./php/test.php',
         type:'post',
         dataType:'json',
         data:{ 
             fooData: userInput
         },
         success:function(data) {
             ...manipulating the data...

             console.log(manipulatedData);    // <--- ['foo', 'foo2'];
             callbackfunc(manipulatedData);
         }
    });
},
FooFunction:function(用户输入){
var callbackfunc=函数(ajaxData)
{
console.log(ajaxData);//ajax完成了!
};
this.FooFunction2(userInput,callbackfunc);
},
FooFunction2:函数(userInput、callbackfunc){
$.ajax({
url:“./php/test.php”,
类型:'post',
数据类型:'json',
数据:{
fooData:userInput
},
成功:功能(数据){
…操纵数据。。。

console.log(操纵数据);//请显示
console.log(数据);
显示的内容。它从何处来以及定义的用户输入??对于这个示例,您没有说明任何内容,您应该检查变量从何处开始请显示
console.log(数据)
显示。它来自何处以及定义在何处userInput??对于这个示例,您没有说什么,您应该检查该变量在何处starts@undefined:是的。解决无法从异步函数返回的问题的方法是改用回调。@未定义:是的。解决无法返回的问题的方法是从异步函数中可以看出,它使用回调函数。