javascript - AJAX 成功或错误未触发

标签 javascript php jquery ajax

我似乎无法弄清楚为什么这不起作用或找到相关文章。我可以看到 firebug 中的 json 对象从 post 请求返回 success: false 或 success: true,所以我不知道为什么该函数不会触发。

ajax

$("#login").submit(function (e) {
    e.preventDefault();

    $.ajax({
        url: "../process/login-process.php",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        data: { 'username': $('[name=username]').val(), 'password': $('[name=password]').val() },
        beforeSend : function (){
            //$("#login").hide();       
        },
        success: function(data){
            window.localation=data.redirect;            
        },
        error: function(data) {
            $(".error").html('');
            alert('wtf');
            if(data.empty) {
                $(".error").html(data.empty);
            }
            if(data.incorrect) {
                $(".error").html(data.incorrect);
            }       
        }
    });
});

php

<?php 
    session_start();
    include "../inc/connect.php";
    $username = mysqli_real_escape_string($con, $_POST['username']); 
    $password = mysqli_real_escape_string($con, $_POST['password']); 
    $password = hash('sha256', $password); 
    $sql = "SELECT * FROM admin WHERE username ='$username' AND password ='$password'";
    $result = mysqli_query($con, $sql) or die(mysqli_error($con));
    $row = mysqli_fetch_array($result);
    $count=mysqli_num_rows($result); 
    if ($username == "" || $password == "") {
        $data['empty'] = 'All fields are required.';
    } else if(($count==1) && ($username)) {
        $_SESSION['user'] = $row['firstName']; 
        $_SESSION['userID'] = $row['adminID'];
        $data['success'] = true;
        $data['redirect'] = '../pages/dashboard.php';
     } else { 
        $data['success'] = false;
        $data['incorrect'] = "Incorrect Username or Password.";
     } 
    echo json_encode($data);
?> 

最佳答案

您需要在代码中更正两件事,

  1. success 回调中将 window.localation 更改为 window.location
  2. 在ajax请求中添加dataType: 'JSON'或在成功回调中使用$.parseJSON

因此,您的成功回调应该是:

success: function(data){
            data = $.parseJSON(data); // <- Don't use this if you add dataType: 'JSON' in ajax
            window.location=data.redirect;        //<- Spelling corrected for location    
        }

关于javascript - AJAX 成功或错误未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26882171/

相关文章:

javascript - 在 Angular 中注入(inject)$window,有什么用?

javascript - AngularJs Protractor : Element in slide out menu not visible

php - Kohana - 发布带有 ".exec"正则表达式的 javascript 代码返回内部错误

Jquery,获取样式: background (not background-color),边框等,无法弄清楚如何做到这一点

javascript - Media Source Extensions 中 "update"和 "updateend"事件的区别

javascript - Java 脚本的 Snort 规则不起作用

php - JQuery 和 PHP - 我可以从服务器推送吗?

nginx - php5-fpm崩溃

javascript - 如果单击禁用的输入按钮,则显示消息

Javascript id 作为 href 中的参数