使用php处理ajax导致的mysql错误

使用php处理ajax导致的mysql错误,php,mysql,ajax,Php,Mysql,Ajax,我正在使用ajax提交表单 function ajax_post() { // ...(code); var hr = new XMLHttpRequest(); var url = "http://domain.com/submit_action.php"; var vars = "element_1=" + ln + "&element_2=" + fn; hr.open("POST", url

我正在使用ajax提交表单

 function ajax_post() {
            // ...(code);
        var hr = new XMLHttpRequest();
        var url = "http://domain.com/submit_action.php";
        var vars = "element_1=" + ln + "&element_2=" + fn;
        hr.open("POST", url, true);
        hr.send(vars);
            // ...(code);
}
让php exc执行查询:

$sql = 'SELECT *
        FROM ' . table. '
        WHERE ' . $db -> sql_build_array('SELECT', $data);
$result = $db -> sql_query($sql);
$sql = 'INSERT INTO ' . table. ' ' . $db -> sql_build_array('INSERT', $data);
$db -> sql_query($sql);
在我上面的代码中,它将运行。但是当'fn'和'ln'相同或者已经存在于数据库中时,就会出现错误。但是因为我使用ajax来提交它,所以我会停留在表单的当前页面上,不会出现错误,也不知道查询是否执行


问题是,有没有办法让php告诉ajax在执行查询时发生了什么样的错误?提前谢谢

在php脚本中回显的任何内容都将返回到
hr.responseXML
hr.responseText
属性中

hr.onreadystatechange
回调中捕获这两个值,只要状态为OK,就可以知道php中发生了什么

hr.onreadystatechange = function() {
    if (hr.readyState == 4 && (hr.status == 200)) {
        //do something with hr.responseText
    }
}
我个人系统地将我的php答案封装在一个通用xml响应中,带有一个自定义状态:error/ok/business error和一条自定义消息,因此我知道如何在javascript层处理它


除此之外,我建议您捕获1062 mysql错误,以了解该错误是由于一个已存在的值引起的,并发出一条更为用户友好的消息。

您尝试过在firebug中调试吗?刚刚尝试过,但没有报告错误。谢谢,我稍后再试。