AJAX语法错误PHP响应

时间:2014-03-17 16:07:10

标签: javascript php jquery ajax

在控制台中,我从我的PHP脚本获得此响应,通过AJAX发送。

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> 

我不知道为什么我会这样做?它正在阻止我的成功功能正确输出数据。 以下是我的AJAX代码:

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

这会被发送到下面显示的PHP脚本。

  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 }

我真的不知道我在这里做错了什么。请有人帮忙吗?

非常感谢提前!

1 个答案:

答案 0 :(得分:3)

100和HTML之间的空格导致jQuery代码失败。虽然jQuery方法被大量重载以执行许多操作,但解析HTML字符串以创建新DOM元素的版本不喜欢前导空格。从PHP文件中删除它或在.trim()上调用return_message

var item = $(return_message.trim()).hide().fadeIn(800);

顺便说一句,您最好使用JSON返回同时具有data_codereturn_message属性的对象,而不是依赖于拆分字符串。您将在PHP中创建一个关联数组,然后使用json_encode函数来回显JSON表示(我只是用尽了我所有的PHP知识)。