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 Ajax 更新 MySQL 数据库,但没有运行成功函数