Javascript AJAX PHP输出未正确显示

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

AJAX脚本成功地将数据发送到PHP脚本,然后PHP脚本将值插入数据库,而无需刷新页面。但是,问题是,如果成功,值不会从PHP输出到页面(错误输出是可以的)。表单只显示“posting…”并暂停,直到您刷新它并从数据库中显示该值

下面是我的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 }
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);
            }
         }
    });