JQuery在返回int时返回undefined

时间:2013-08-28 19:30:12

标签: jquery

我是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

另外,我是否允许在文档内部编写函数?这是我需要使用它的地方。

2 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分:0)

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

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