从ajax查询中检测服务器端问题


Detecting server side issues from within an ajax query

这是我的jquery代码:

$(function() {  
$("#edit_union").click(function() {
    var tuzove = $("#tuzove").val();
    var description = $("#description").val();
    var union_owner = $("#union_owner").val();
    var union_name = $("#union_name").val();
    var uid = $("#uid").val();
    var dataString = 'tuzove='+ tuzove + '&description=' + description + '&union_owner=' + union_owner + '&union_name=' + union_name + '&uid=' + uid;  
    $.ajax({  
        type: "POST",  
        url: "ajax/admp_ajax.php",  
        data: dataString,  
        success: function() {
            $(".adm_panel_serach_user").append("<br/><span style=' color: #0099ff; font-weight: bold;'>Success.</span>");
        }  
    });
    return false;
});
});

这就是ajax/amp_ajax.php页面:

include_once 'classes/admin_panel.php';
$admpanel = new adminPanal();
if ($_POST['tuzove'] && $_POST['description'] && $_POST['union_owner'] && $_POST['union_owner'] && $_POST['uid'])
$admpanel->editUnion($_POST['tuzove'], $_POST['description'], $_POST['union_owner'], $_POST['union_name'], $_POST['uid']);

这就是editUnion函数:

public function editUnion($tyzove, $description, $ownerName, $unionName, $unionId) {
    mysql_query("UPDATE `union` SET tuzove = '" . $tyzove . "', description = '" . mysql_real_escape_string($description) . "', owner_id = '" . $this->getUserId($ownerName) . "' WHERE name = '" . $unionName . "'");
    if ($ownerName == $ownerName)
        mysql_query("UPDATE users SET union_rank = '0', union_id = '0' WHERE username = '" . $ownerName . "'");
    mysql_query("UPDATE users SET union_rank = '1', union_id = '" . $unionId . "' WHERE username = '" . $ownerName . "'");
}

问题是,当我单击edit_union按钮写入Success,但不更新union:(.

不管sql查询是否失败,php页面都会返回一些内容。这意味着,除非由于某种原因无法加载页面,否则总会触发成功。SQL故障不会导致它失败。

因此,您将始终打印您的成功,但更新本身可能会失败。尝试在浏览器中单独运行php页面,并查看sql出现的任何错误。您也可以尝试使用php中的echo语句将sql查询打印到屏幕上,然后将其复制到sql命令行或phpmyadmin等中。

另外需要注意的是,由于查询信息来自表单/输入字段,因此需要非常小心地防止sql注入等。考虑使用mysqli和prepared语句。

您的ajax成功函数没有执行任何操作。。它只是更新成功。。。根据JS方面,这是可以的。。检查正在发送的数据,。。不要使用dataString。。实际上创建类似的数据对象

var dataObject=new Object();
dataObject.union_name=union_name;

清除服务器端代码。。我认为数据没有成功提交。