0

我对 JQuery 很陌生,但我真的很努力去了解它。我已经编写了一个函数,我期望它返回一个返回值,但只是变得未定义。有人可以告诉我哪里出错了吗?

这是我的代码。

function test(){
  $.ajax({
    url:"",
    dataType:"json",
    type:'POST',
    data:{countMedia:'true'},
    success:function(data){
return data.value;
    }
  });
}

alert(test()); // returns undefined when it should return an int value

另外,我可以在准备好的文档中编写一个函数吗?这是我需要使用它的地方。

4

2 回答 2

1

$.ajax是异步的,因此您不应在 AJAX 回调中返回值

您应该将回调传递给测试函数以在请求完成时执行。

像这样的东西:

function test(callback){
  $.ajax({
    url:"",
    dataType:"json",
    type:'POST',
    data:{countMedia:'true'},
    success:function(data){
        callback(data.value);
    }
  });
}

test(function(data) {
    alert(data);
});

将数据请求作为参数传递(正如您在评论中所问的那样):

function test(requestData, callback){
  $.ajax({
    url:"",
    dataType:"json",
    type:'POST',
    data:requestData,
    success:function(data){
        callback(data.value);
    }
  });
}

test({countMedia:'true'}, function(data) {
    alert(data);
});
于 2013-08-28T19:33:43.217 回答
0

这就是 AJAX 的工作方式(异步)。

function test(){
  $.ajax({
    url:"",  // No url found here 
    dataType:"json",
    type:'POST',
    data:{countMedia:'true'},
    success:function(data){
    alert(data.value)
    }
  });
}
test();
于 2013-08-28T19:34:06.660 回答