Страница перенаправляется до завершения ajax - PullRequest
0 голосов
/ 23 июля 2011

Я использую ajax для создания сеанса и перенаправления страницы, когда пользователь нажимает на кнопку, подобную этой. Я использую это в API Facebook (используя API для создания сеанса с user.id)

    FB.login(function(response) {
            if (response.session) {
                FB.api('/me', function(user) {
                if (user!=null) {
                    var request = new XMLHttpRequest();         
                    if(document.getElementById("ans2").value==""){
                        document.getElementById("belowbutton2").innerHTML ="Don't leave it blank!!";
                    }
                    else{
                        var request2 = new XMLHttpRequest();

                        request.onreadystatechange=function(){

                            if(request.readyState==4 && request.status==200){
                                    document.getElementById("debugger").innerHTML = request.responseText;
                                    window.location = "weekques/weekques.php";
                                }
                        }
                        var uid = user.id;   
                        alert(uid);     
                        var jqXHR = ($.ajax)({url:"sessions.php?uid="+uid,
                                            async:false,
                                            cache: false,
                                            timeout: 30000,
                                            error:function(){
                                                window.location = "http://www.xyz.com";
                                            },
                                            success:function(){
                                                    request.open("GET", "weekques/answer.php?ans="+document.getElementById("ans2").value, true); //+"&qid="+qidjs
                                                    request.send();
                                                }
                                            });



                        }
                     }
                 });
            } 
        });

но проблема в том, что окно перенаправляется до создания сеанса .. вот файл

sessions.php

    <?php

    session_start();


    require_once("connection.php");
    $user=mysql_query("SELECT * from `thebirbals`.`FBusers` where uid='$uid';");


    $row_count=mysql_num_rows($result);


        $_SESSION['uid']=$_GET["uid"];
        $uid = $_SESSION['uid'] ;


    if($row_count==1){

        $_SESSION['name'] = $check["name"];
        $_SESSION['profile_link'] = $check["profile_link"];
        $_SESSION['dp'] = $check["dp"];
    }

    else{


        require_once('facebook/src/facebook.php');

        $facebook = new Facebook(array(
         'appId'  => '1550598824560526',
         'secret' => '4cf28242b5abfa26be8fd3e2074e5724',
         'cookie' => false
         ));


         $fql = "SELECT first_name,profile_url,pic_small from user where uid=$uid";

         $response = $facebook->api(array(
         'method' => 'fql.query',
         'query' =>$fql,
         ));


         foreach($response as $val)
         {

            $_SESSION['name']=$val["first_name"];
            $_SESSION['dp']=$val["pic_small"];
            $_SESSION['profile_link']= $val["profile_url"];

            $name = $val["first_name"];
            $profile_link = $val["profile_url"];
            $dp = $val["pic_small"];
            echo "done";

        }

        $insert=mysql_query("INSERT INTO  `thebirbals`.`FBusers` ( `uid`, `name`, `profile_link`, `dp`) VALUES ('$uid', '$name', '$profile_link', '$dp');");


    }   
?>

, который я хочу перенаправить после сеансов.php завершил работу, этого не произойдет

ты заранее за любую помощь ..:)

1 Ответ

0 голосов
/ 23 июля 2011

Я сделал удар.Не уверен, что это решит вашу проблему полностью, но примите это как отправную точку:

FB.login(function (response) {
    if (response.session) {
        FB.api('/me', function (user) {
            if (user != null) {
                if (document.getElementById("ans2").value == "") {
                    document.getElementById("belowbutton2").innerHTML = "Don't leave it blank!!";
                }
                else {
                    var uid = user.id;
                    alert(uid);
                    $.ajax({ url: "sessions.php?uid=" + uid,
                        async: false,
                        cache: false,
                        timeout: 30000,
                        error: function () {
                            window.location = "http://www.xyz.com";
                        },
                        success: function () {
                            $.get("weekques/answer.php", $.param({ "ans": document.getElementById("ans2").value }), function (data) {
                                alert("Answer received");
                                document.getElementById("debugger").innerHTML = data;
                                window.location = "weekques/weekques.php";
                            });
                        }
                    });
                }
            }
        });
    }
});
...