Javascript AJAX PHP输出未正确显示
AJAX脚本成功地将数据发送到PHP脚本,然后PHP脚本将值插入数据库,而无需刷新页面。但是,问题是,如果成功,值不会从PHP输出到页面(错误输出是可以的)。表单只显示“posting…”并暂停,直到您刷新它并从数据库中显示该值 下面是我的JS代码:Javascript AJAX PHP输出未正确显示,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,AJAX脚本成功地将数据发送到PHP脚本,然后PHP脚本将值插入数据库,而无需刷新页面。但是,问题是,如果成功,值不会从PHP输出到页面(错误输出是可以的)。表单只显示“posting…”并暂停,直到您刷新它并从数据库中显示该值 下面是我的JS代码: $(document).ready(function(){ var form = $('form'); var submit = $('#submit'); form.on('submit', function(e) { e
$(document).ready(function(){
var form = $('form');
var submit = $('#submit');
form.on('submit', function(e) {
e.preventDefault();
$.ajax({
url: 'ajax_comment.php',
type: 'POST',
cache: false,
data: form.serialize(),
beforeSend: function(){
submit.val('Posting...').attr('disabled', 'disabled');
},
success: function(data){
var data_code = data.substring(0,3);
var return_message = data.substring(3); // this is return message without code
if(data_code == 100) {
var item = $(return_message).hide().fadeIn(800);
$('.new-comment').append(item);
form.trigger('reset');
submit.val('Submit Comment').removeAttr('disabled');
} else if(data_code == 200) {
//its a fail
alert("Error: " + return_message);
}
}
});
});
});
这是AJAX将数据发送到的页面:
if(empty($order_id) === true || empty($comment) === true) {
echo "200comment or order id is empty";
exit();
} else if($num_rows_reviewed> 0) {
echo "200";
exit();
} elseif($no_id_match == 0) {
echo "200";
exit();
} elseif(strlen($comment) > 499) {
echo "200 comment cannot be bigger then 499";
exit();
} else {
echo"100"; // all is good
?> <div class="comment-item">
<div class="comment-post">
<h3><?php echo $name; ?>: <span><?php echo $date; ?></span></h3>
<p><?php echo $comment; ?></p>
</div>
</div>
<?php }
if(空($order_id)==true | |空($comment)==true){
echo“200comment或order id为空”;
退出();
}else if($num\u rows\u revieved>0){
回声“200”;
退出();
}elseif($no\u id\u match==0){
回声“200”;
退出();
}埃尔塞夫(斯特伦($comment)>499){
echo“200条评论不能大于499条”;
退出();
}否则{
回声“100”;//一切都很好
?>
:
我认为你需要一个清晰的回答…所以,你的错误:
您没有为ajax请求提供数据类型,要停止不必要的解析,您应该使用它
如果您使用的是ajax,那么应该使用JSON返回数据,而不是通过字符串操作来解码数据
不能在不存在的html元素上使用动画
您的php文件中有错误。您可以看到浏览器从php脚本接收到的注销文本。您应该检查php文件是否存在错误,介于echo“100”和div标记之间。可能您没有从php文件中复制所有内容
所以你应该试试下面的方法
PHP
$response = new stdClass();
$response->code = 200;
$repsonse->message = "";
if (empty($order_id) === true || empty($comment) === true) {
$repsonse->message = "comment or order id is empty";
} else if ($num_rows_reviewed > 0) {
} else if ($no_id_match == 0) {
} else if (strlen($comment) > 499) {
$repsonse->message = "comment cannot be bigger then 499";
} else {
$response->code = 100;
$repsonse->message = "<div class=\"comment-item newItem\" style=\"display: none;\">
<div class=\"comment-post\">
<h3>".$name.": <span>".$date."</span></h3>
<p>".$comment."</p>
</div>
</div>";
}
echo json_encode($response, JSON_NUMERIC_CHECK);
抱歉,我搞错了,请尝试新代码
问候,,
hotzu成功处理程序的JavaScript中是否存在错误?请检查JavaScript控制台。该函数中的任何错误都可能导致此行为。在浏览器的调试器中逐步检查该函数,查看它是否执行预期的操作,检查运行时值。什么是console.log(数据)
give you,我还建议您在响应中使用json。尝试将数据类型:“html”添加到ajax请求中……我不确定,但可能是$(返回消息)正在引发语法错误。请向ajax请求添加错误处理程序。请参阅上面的编辑,我已从控制台添加了响应。我收到了未捕获错误:语法错误,无法识别的表达式:
。如何修复此问题?请参阅编辑以了解语法。
100this <div class="comment-item">
<div class="comment-post">
<h3>Andrew D: <span>17th March 2014</span></h3>
<p>hi</p>
</div>
</div>
$response = new stdClass();
$response->code = 200;
$repsonse->message = "";
if (empty($order_id) === true || empty($comment) === true) {
$repsonse->message = "comment or order id is empty";
} else if ($num_rows_reviewed > 0) {
} else if ($no_id_match == 0) {
} else if (strlen($comment) > 499) {
$repsonse->message = "comment cannot be bigger then 499";
} else {
$response->code = 100;
$repsonse->message = "<div class=\"comment-item newItem\" style=\"display: none;\">
<div class=\"comment-post\">
<h3>".$name.": <span>".$date."</span></h3>
<p>".$comment."</p>
</div>
</div>";
}
echo json_encode($response, JSON_NUMERIC_CHECK);
$.ajax({
url: 'ajax_comment.php',
type: 'POST',
cache: false,
dataType: 'json',
data: form.serialize(),
beforeSend: function(){
submit.val('Posting...').attr('disabled', 'disabled');
},
success: function(data){
if(data.code === 100 ) {
$('.new-comment').append(data.message);
$('.new-comment div.newItem').fadeIn(800).removeClass('newItem');
form.trigger('reset');
submit.val('Submit Comment').removeAttr('disabled');
} else if(data.code == 200) {
//its a fail
alert("Error: " + data.message);
}
}
});