在控制台中,我从我的 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_code
和 return_message
属性的对象,而不是依赖于拆分字符串。您将在 PHP 中创建一个关联数组,然后使用 json_encode
函数来回显 JSON 表示(我几乎用尽了我所有的 PHP 知识)。
关于javascript - AJAX 语法错误 PHP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22459398/