Javascript 数据为';s从函数返回的值未定义
我在将数据从ajax返回给调用方函数时遇到问题。当我在控制台上注销时,它是未定义的 我相信我的问题是由于js是异步的,当我在控制台上记录数据时,它还没有准备好。我能做些什么来解决它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
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:是的。解决无法从异步函数返回的问题的方法是改用回调。@未定义:是的。解决无法返回的问题的方法是从异步函数中可以看出,它使用回调函数。