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 に答える