The AJAX script successfully sends the data to the PHP script and then that inserts the value into the database all without the page refreshing. However, the problem is that on a success the value is not outputted from PHP to the page (error outputting is fine). The form just says 'posting...' and stalls until you refresh it and the value appears from the database.
Below is my JS code:
$(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);
}
}
});
});
});
This is the page that the AJAX sends the data to:
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 }
I am really struggling with this and I am not sure where to go from here! This is so close to working but I do not know how to solve it. The error output messages come through fine it is only the success message and the data that does not come through as required.
Many thanks in advance!
EDIT
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>
EDIT2
100this <div class="comment-item">
<div class="comment-post">
<h3>Andrew D: <span>17th March 2014</span></h3>
<p>hi</p>
</div>
</div>
successhandler? Check the JavaScript console. Any error from within that function could cause this behavior. Step through the function in your browser's debugger and see if it does what you expect it to do, examining the runtime values.console.log(data)give you, also I'd suggest using json in your response.Uncaught Error: Syntax error, unrecognized expression:. How can I fix this? Please see the edit for the syntax.