我正在使用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 提交它,所以我留在表单的当前页面上而不会收到错误,也不知道查询是否 exc。
问题是,有没有办法让 php 告诉 ajax 在查询的 exc 期间发生了什么样的错误?提前谢谢。
在
PHP 脚本期间回显的任何内容都将返回到 hr.responseXML
和 hr.responseText
属性中。
在状态为 OK 时,在 hr.onreadystatechange
回调中捕获这两个值,以了解 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 错误以了解该错误是由于已经存在的值引起的,并引发更用户友好的消息。