gpt4 book ai didi

javascript - AJAX PHP 输出未正确显示

转载 作者:行者123 更新时间:2023-11-28 01:28:10 25 4
gpt4 key购买 nike

AJAX 脚本成功将数据发送到 PHP 脚本,然后将值插入数据库,而无需刷新页面。然而,问题是成功后该值不会从 PHP 输出到页面(错误输出也可以)。该表单仅显示“正在发布...”并停止,直到您刷新它并且该值从数据库中出现为止。

下面是我的JS代码:

$(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 }

我真的很挣扎,我不知道从这里该去哪里!这非常接近工作,但我不知道如何解决它。错误输出消息正常传递,只有成功消息和未按要求传递的数据。

非常感谢!

<小时/>

编辑

Uncaught Error: Syntax error, unrecognized expression: 100this    <div class="comment-item">
<div class="comment-post">
<h3>Andrew D: <span>17th March 2014</span></h3>
<p>hi</p>
</div>
</div>
<小时/>

编辑2

100this    <div class="comment-item">
<div class="comment-post">
<h3>Andrew D: <span>17th March 2014</span></h3>
<p>hi</p>
</div>
</div>

最佳答案

我认为你需要一个干净的回应......所以,你的错误:

  1. 您没有为 ajax 请求提供数据类型,为了停止不需要的解析,您应该使用它。
  2. 如果您使用ajax,则应使用 JSON 来返回数据,而不是通过字符串操作来解码数据
  3. 不能在不存在的 html 元素上使用动画
  4. 您的 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);

JAVASCRIPT AJAX 请求

$.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);
}
}
});

抱歉,我犯了一个错误,请尝试新代码。

问候,热津

关于javascript - AJAX PHP 输出未正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22457698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com