dongxing2692 2012-11-17 05:48
浏览 325
已采纳

result.success失败的ajax调用

My code run's through fine but fails when it gets to the success call. On the ajax section "if (result.success){" it shows an error in the browsers sources tab with result being null.

Login Page:

<form id="login_form_header">
    <input type="hidden" name="action" value="sc_ajax_callback" />
    <input type="hidden" name="func" value="sc_login" />

    Email:
    <input type="text" name="username" />

    Password:
    <input type="password" name="password"/>

    <input type="submit" value="Log in" />
</form>
<script>
$("#login_form_header").submit(function(event){

    event.preventDefault();

    $.ajax({
        type: 'post',
        url: '<?php echo get_stylesheet_directory_uri(); ?>/connect.php',
        data: $('#login_form_header').serialize(),
        dataType: 'json',
        success: function(result){
            if (result.success){
                window.location = "my-dashboard/";
                return false;
            };
        },
        error: function(e){console.log("Could not retrieve login information")}
    });

    return false;
});
</script>

Connect Page:

<?php 

    mysql_connect("localhost", "%user%", "%pass%") or die(mysql_error()); // Connect to database server(localhost) with username and password.
    mysql_select_db("%db%") or die(mysql_error()); // Select registration database.
    # Make sure form data was passed to the script
    if(isset($_POST['username']) && !empty($_POST['username']) AND isset($_POST['password']) && !empty($_POST['password'])){

    # Define Variables
    $active_var = "1";
    $given_username = mysql_escape_string($_POST['username']);
    $given_password = dosomethingtopass;
    $matched_username = "";
    $matched_password = "";

     # See if there is matching info in the database
    $sql = 'SELECT username, password, active FROM %table% WHERE username="'.$given_username.'" AND password="'.$given_password.'" AND active="'.$active_var.'"'; 
    $result = mysql_query($sql);
    while($row = mysql_fetch_assoc($result)){
    if($given_password == $row['password']){
        $matched_username = $row['username'];
        $matched_password = $row['password'];
        }
    };

    # If there was a match 
    if($matched_username != "" && $matched_password != ""){
        #If there is only one result returned
        echo json_encode(array("$matched_password"));
        $session_sql = 'SELECT id, username, password, last_login FROM %table% WHERE username="'.$matched_username.'" AND password="'.$matched_password.'"';
        $session_result = mysql_query($session_sql);
        while($returned_row = mysql_fetch_assoc($session_result)){
            if($matched_password == $returned_row['password']){ 


            $_SESSION['id'] = $returned_row['id'];
            //$_SESSION['last_login'] = $returned_row['last_login'];
            $_SESSION['username'] = $returned_row['username'];
                }
             }

            $date = date('Y-m-d H:i:s');
            $update_sql = "UPDATE %table% SET last_login='".$date."'";
            mysql_query($update_sql);

        echo json_encode(array("success"=>"user logged in", "session"=>$_SESSION));
        }
    }

?>

Also the update_sql is updating every row in my table kinda odd. Not sure where I am going wrong any help?

EDIT:

Updated

   $.ajax({
        type: 'post',
        url: '<?php echo get_stylesheet_directory_uri(); ?>/connect.php',
        data: $('#login_form_header').serialize(),
        dataType: 'json',
        success: function(result){

                window.location = "my-dashboard/";

            };
        },
        error: function(e){console.log("Could not retrieve login information")}
    });
  • 写回答

2条回答 默认 最新

  • drc15469 2012-11-17 06:10
    关注
    success: function(result){
                if (result.success){
                    window.location = "my-dashboard/";
                    return false;
                };
    

    change to

    success: function(result){                    
                        window.location = "my-dashboard/";                     
                    }
    

    result here is te data sent by the server, not an object.


    Also the update_sql is updating every row in my table kinda odd

    It is because there is no WHERE clause in your UPDATE query.

    From the documentation:

    The WHERE clause, if given, specifies the conditions that identify which rows to update. With no WHERE clause, all rows are updated.

    More info here

    EDIT after update

    you have an extra };.

    change

    success: function(result){
    
                    window.location = "my-dashboard/";
    
                };
            },
    

    to

    success: function(result){
    
                    window.location = "my-dashboard/";
    
    
            },
    

    A few point worth to mention:

    • Deprecation Notice: The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks will be deprecated in jQuery 1.8. To prepare your code for their eventual removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

    • mysql_* functions are being deprecated. Use PDO instead.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 outlook无法配置成功
  • ¥15 Pwm双极模式H桥驱动控制电机
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换