javascript - AJAX 语法错误 PHP 响应

标签 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 }

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

非常感谢!

最佳答案

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

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

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

关于javascript - AJAX 语法错误 PHP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459398/

相关文章:

javascript - Webpack less-loader 在生产构建中缺少基本路径

javascript - Ajax 调用无法从 Web api 服务获取返回消息

javascript - 对格式化日期的 javascript 数组进行排序

javascript - 如何使用 JavaScript 将变量应用为元素 ID?

javascript - 在 TypeScript 中向 Object.prototype 添加自定义方法

php - symfony 如何到 "wildcard everything"路由

php - 首先从特定值开始对数据库结果进行排序 Kohana PHP

php - 是否可以编写一个接受电子邮件的 php 脚本(如电子邮件机器人)

javascript - 如何删除父元素Jquery中某个类的元素

javascript - 在jquery中一起使用 'this'和 ':not'