在控制台中,我从我的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 }
我真的不知道我在这里做错了什么。请有人帮忙吗?
非常感谢提前!
答案 0 :(得分:3)
100
和HTML之间的空格导致jQuery代码失败。虽然jQuery方法被大量重载以执行许多操作,但解析HTML字符串以创建新DOM元素的版本不喜欢前导空格。从PHP文件中删除它或在.trim()
上调用return_message
:
var item = $(return_message.trim()).hide().fadeIn(800);
顺便说一句,您最好使用JSON返回同时具有data_code
和return_message
属性的对象,而不是依赖于拆分字符串。您将在PHP中创建一个关联数组,然后使用json_encode
函数来回显JSON表示(我只是用尽了我所有的PHP知识)。