使用php处理ajax导致的mysql错误
我正在使用ajax提交表单使用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
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中调试吗?刚刚尝试过,但没有报告错误。谢谢,我稍后再试。