0

私は自分のプロジェクトにfacebook APIを使用しており、varで次の方法でデータを取得していますmydata

if (response.status === "connected")
        {
            LodingAnimate(); //Animate login
            FB.api('/me?fields=movies,email', function(mydata) { //--
            console.log(mydata);
              if(data.email == null)
              {
                 alert("You must allow us to access your email id!");
                 ResetAnimate();
             }
   }

このコードに問題はありません。しかし、このデータを ajax 呼び出しを使用して送信し、処理してデータベースに挿入したいと考えています。

私のajax呼び出し:

function AjaxResponse()
 {
    var send=document.ge(mydata)      **//Here I want to fetch mydata from previous code**
    var datas = document.elements['id'].value;
    var s = 'connect=1'; 
     $.ajax({
    type: "POST",
    url: "process_facebook.php",
    data: s,send                   **//Is this correct way to send s and send togather? I have tried with only 's' which works fine but dont know about both togather**
    }).done(function(result) {
    $("#fb-root").html(result);
    });
   }

javascript 関数で mydata をフェッチしてコードを確認する方法を教えてください。

4

1 に答える 1

1

行っている Facebook API 呼び出しは非同期であるため、関数から値を返すことはできませんge

代わりに、Facebook や他のすべての人が行うのと同じように、コールバックを使用してください。下記参照。

これとは別に、コード スニペットに隠されている 2 番目の無関係な質問に対する答えは、「いいえ、それはあなたのやり方ではありません」です。その方法についても、以下で説明しています。

function AjaxResponse()
{
    // Callback here----v arg ---v
    document.ge(mydata, function(send) {
        var datas = document.elements['id'].value;
        $.ajax({
            type: "POST",
            url: "process_facebook.php",
            data: {
               connect: 1,
               paramname: mydata      // <=== I don't know what the name of this param is
            }
        }).done(function(result) {
        $("#fb-root").html(result);
    });
}

..そして、Facebook 呼び出しがそのコールバックを呼び出すときに、コードでコールバックを呼び出すようにします。

function ge(data, callback) {
    // ...
    if (response.status === "connected") {
        LodingAnimate(); //Animate login
        FB.api('/me?fields=movies,email', function (mydata) { //--
            console.log(mydata);
            if (data.email == null) {
                alert("You must allow us to access your email id!");
                ResetAnimate();
            }
            else {
                callback(data); // <=== Trigger the callback
            }
        }
       // ...
    }
    // ...
}
于 2013-08-07T11:51:53.947 に答える