jquery ajax 脚本运行成功但导致错误

Posted

技术标签:

【中文标题】jquery ajax 脚本运行成功但导致错误【英文标题】:jquery ajax script is run successfully but results in error 【发布时间】:2013-07-17 17:59:20 【问题描述】:

我有一个简单的脚本,即使 php 脚本运行成功,也会不断出错。

PHP

require('/connect.php');  //Has my $link variable


if(isset($_POST['pass']))

    $user = $_POST['user'];
    $oldpass = md5(urldecode($_POST['op']));
    $newpass = md5(urldecode($_POST['np']));

    $q = "SELECT * FROM `nht_users` WHERE usr = '".$user."' AND pass = '".$oldpass."'";
    $r = mysqli_query($link,$q);
    $n = mysqli_num_rows($r);

    if( $n > 0)

        $u = "UPDATE `nht_users` SET pass = '".$newpass."' WHERE usr = '".$user."'";
        mysqli_query($link,$u);

    

    else

        echo json_encode('FALSE');

    


JQuery

$('#pass-submit').click(function() 

        var npp = $('#npp').val(),
            np = $('#np').val(),
            data = $('#pass-form').serialize(),
            url = 'http://www.<?php echo DOMAIN; ?>/functions.php';

        if (npp == np) 
            $('#test').html(url);
            $.ajax(
                type: 'POST',
                url: url,
                data: 'pass=true&'+data,
                success: function(data)

                    $('#pass-form').slideUp(800);
                    $('.pass-true').fadeIn(800);

                ,
                error: function()

                    $('.pass-false').fadeIn(800);

                
            );
        
        else 
            $('.pass-check').fadeIn(800);
        

    );

【问题讨论】:

您不应该从脚本中发送标头吗? 是浏览器控制台出错了吗? 对不起,它会做 AJAX 错误回调。 @tPlummer 错误是因为更新查询运行时您没有回显任何内容,或者它发生在 if 检查中 我建议在整个 php 文件的重要位置添加一些 echo 语句,以帮助跟踪正在发生的事情。顺便说一句,您似乎需要在您的 UPDATE 语句中添加一个 WHERE 子句。 【参考方案1】:

为了更好地了解您的回复中发生了什么,您可以尝试使用 Chrome 中的网络标签(按 F12)并运行您的流程。您应该看到您的 ajax 请求和响应通过。 Internet Explorer 也有类似的选项,但您需要告诉它明确监视网络。跟踪此类问题的另一种选择是安装桌面应用程序,如 Fiddler2 (http://fiddler2.com/)。

我已经使用了所有这 3 个不同级别的方法来找出我的 AJAX 请求没有按预期运行的原因。

【讨论】:

【参考方案2】:

捕捉错误

error: function(xhr, textStatus, errorThrown) 
    alert(xhr.responseText);

【讨论】:

看,就是这样。如果我为此进行编程,则没有响应文本。 @tPlummer 这意味着您的 php 没有返回任何内容。我的猜测是你实际上得到了一个 500 错误(内部服务器错误),这表明一个 php 错误。 textStatus 和 errorThrown 参数包含什么?

以上是关于jquery ajax 脚本运行成功但导致错误的主要内容,如果未能解决你的问题,请参考以下文章

jquery中的done和always解决ajax问题

jquery ajax返回错误但成功

jQuery AJAX 表单错误。空字符串

JQuery Ajax 更新 MySQL 数据库,但没有运行成功函数

在 asp.net webservices 中使用 jQuery AJAX 总是出错:而不是成功:

jQuery ajax 请求导致 Not Found 错误