这里我将跨度值存储到数据库中。它工作正常。我现在面临ajax返回错误消息的问题。例如,在我的save.php代码中,我将数据库表名sample
更改为simple
(我没有simple
数据库表)。在主页中,我想得到“此simple
数据库表名称不存在”的错误消息。 但它始终显示数据已成功保存。
我在其他一些网站上搜索过。有人说我应该用json来获取正确的错误信息。但是,我不知道该怎么做。如何使用json和ajax获取正确的错误消息?我觉得这很简单。但是,我是ajax的新手。
save.php
<?php
include('config.php');
$get = $_POST['content'];
try
{
$stmt = $conn->prepare("INSERT INTO sample (divvalue) VALUES (?)");
$conn->errorInfo();
$stmt->bindParam('1', $get, PDO::PARAM_STR);
$stmt->execute();
}
catch(PDOException $e)
{
'Error : ' .$e->getMessage();
}
if($stmt)
{
echo 1;
}
?>
ajax.js
$(document).ready(function() {
$("#save").click(function (e) {
var span_contents = $('#ele').html();
$.ajax({
url: 'save.php',
type: 'POST',
data: {
content: span_contents
},
success: function(data){
if(data == '1')
{
$('#status')
.addClass('return')
.html('Data saved succesfully')
.fadeIn('fast')
.delay(3000)
.fadeOut('slow')
}
else
{
$('#status')
.addClass('error')
.html('Error occured')
.fadeIn('fast')
.delay(3000)
.fadeOut('slow')
}
}
});
});
});
mainpage.php
<span id="ele" class="ele" contenteditable >element</span>
<input type="button" id="save" value="save" />
<br />
<div id="status"></div>
答案 0 :(得分:2)
在你的代码中我认为每次返回一个。在catch
块中,您需要返回另一个值,如0。
try
{
if($stmt){
echo "1";
}
}
catch(PDOException $e)
{
echo 'Error : ' .$e->getMessage();
}
您还可以在ajax函数中添加错误处理程序,如
$.ajax({
success: function(data){
if(data == '1')
{
$('#status')
.addClass('return')
.html('Data saved succesfully')
.fadeIn('fast')
.delay(3000)
.fadeOut('slow')
}
else
{
$('#status')
.addClass('error')
.html('Error occured')
.fadeIn('fast')
.delay(3000)
.fadeOut('slow')
}
},
//another handlers and properties
error:function(error){
$('#status')
.addClass('error')
.html('Error occured')
.fadeIn('fast')
.delay(3000)
.fadeOut('slow')
}
});
答案 1 :(得分:1)
您可以使用json
数据
PHP:
<?php
include('config.php');
$get = $_POST['content'];
try
{
$stmt = $conn->prepare("INSERT INTO sample (divvalue) VALUES (?)");
$conn->errorInfo();
$stmt->bindParam('1', $get, PDO::PARAM_STR);
$stmt->execute();
if($stmt)
{
echo '{"status":1}';
}
}
catch(PDOException $e)
{
echo '{"status":0,"Error" : "' .$e->getMessage().'"}';
}
?>
JQUERY:
success: function(data){
$('#status')
.addClass('return')
.html(data.status?'Data saved succesfully':'Error'+data.Error)
.fadeIn('fast')
.delay(3000)
.fadeOut('slow')
},
dataType:'json'
答案 2 :(得分:1)
请更新您的代码。这是你的PHP,它也需要在错误上回应。
<?php
include('config.php');
$get = $_POST['content'];
try
{
$stmt = $conn->prepare("INSERT INTO sample (divvalue) VALUES (?)");
$conn->errorInfo();
$stmt->bindParam('1', $get, PDO::PARAM_STR);
$stmt->execute();
}
catch(PDOException $e)
{
echo 'Error : ' .$e->getMessage();
}
if($stmt)
{
echo 1;
}
?>
也在你的JavaScript中。
$(function() {
$("#save").click(function (e) {
var span_contents = $('#ele').html();
$.ajax({
url: 'save.php',
type: 'POST',
data: {
content: span_contents
},
error: function(data){//callback option is invoked, if the request fails.
$('#status')
.addClass('error')
.html('Error occured')
.fadeIn('fast')
.delay(3000)
.fadeOut('slow');
},
success: function(data){//callback option is invoked, if the request succeeds.
$('#status')
.addClass('return')
.html('Data saved succesfully')
.fadeIn('fast')
.delay(3000)
.fadeOut('slow');
}
});
});
});
答案 3 :(得分:0)
我认为
if($stmt)
{
echo 1;
}
始终评估为true,尝试(测试)做回声“2”而不修改任何其他内容。 尝试在catch块中添加一个echo。 您还可以使用网络选项卡中的devTools检查响应返回的内容。
答案 4 :(得分:0)
请使用以下语法进行ajax调用:
$.ajax({
url: 'save.php',
type: 'POST',
data: {
content: span_contents
},
success: function(data){
if(data == '1')
{
$('#status')
.addClass('return')
.html('Data saved succesfully')
.fadeIn('fast')
.delay(3000)
.fadeOut('slow')
},
error: function(data){
alert('Your error message here');
}
});
如果出现错误,将触发jquery ajax调用的错误回调
答案 5 :(得分:0)
一个好的标准方法是使用JSON,如下所示
catch
{
echo {"status":"failure","message":"The Error message goes here"};
}
if($stmt)
{
echo {"status":"success","message":"Data saved successfully"};
}
并在你的ajax成功函数中检查如下
dataType:'json',
success: function(data){
if(data.status == 'success')
{
// do the required
}
else{
// do the required
}
}
您可以根据需要添加更多变量,例如返回字符串
中的状态和消息