2

我正在使用 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' 相同或已经存在于 db 中时,就会出现错误。但是因为我使用 ajax 提交它,所以我停留在表单的当前页面上而不会出现错误,也不知道查询是否为 exc。

问题是,有没有办法让 php 告诉 ajax 在查询的 exc 期间发生了什么样的错误?提前致谢。

4

1 回答 1

2

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

只要状态正常,就在回调中捕获这两个值hr.onreadystatechange,以了解 php.ini 中发生了什么。

hr.onreadystatechange = function() {
    if (hr.readyState == 4 && (hr.status == 200)) {
        //do something with hr.responseText
    }
}

我个人系统地将我的 php 答案封装在一个通用的 xml 响应中,具有自定义状态:错误/确定/业务错误和自定义消息,所以我知道在 javascript 层如何处理它。

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

于 2012-06-03T16:58:11.220 回答