I was googling for a few hours but I'm still stucked with this. I'm trying to send data to a php file with .load jquery function. I'm trying this:
$(document).ready(function() {
var commentCount = 2;
$("button").click(function() {
commentCount = commentCount + 2;
console.log("Coment Count: " + commentCount);
$("#comments").load("load-comments.php", {
'commentNewCount': commentCount
});
});
});
And my php should receive this variable as POST so I can get the information from a MySQL call.
$commentsNewCount = $_POST['commentNewCount'];
$more_comments->bindParam(':limits', $commentsNewCount, PDO::PARAM_INT);
$more_comments->execute();
$more_all_comments = $more_comments->fetchAll();
foreach ($more_all_comments as $key => $rs) {
echo '<p>';
echo $rs['author'];
echo '<br>';
echo $rs['message'];
echo '</p>';
}
I checked the console from the developer tool and I get the following error:
POST http://my_url/load-comments.php 500 (Internal Server Error)
I already try to implement a try catch in the .load function but I wasn't be able to get the error message, I printed several console.log as a mode for debugging but I don't know what could be the error.
This is for printing in real time, searched in google but can't find something like this, a lot of people use more complex functions like $.ajax or something like so I'm guessing my error is very simple.
Please, help me with your wisdom.
You can pass data with load(), I think that the error is in the server side, you should check, debug or use var_dump in php and maybe you can use postman and send a post request with the param commentNewCount in the body. ref: http://api.jquery.com/load/
The load() method send a GET request if you only pass the url, but if you pass a params object it send a POST request, check https://github.com/jquery/jquery/blob/3d732cca6b5076a9d13eee98e2b075b37384cd91/src/ajax/load.js#L34
For example:
$( '#comments' ).load( 'load-comments.php',
{ commentNewCount: commentCount },
function() {
console.log('server return');
}
);
I'm unsure if your jQuery in anyway send a POST and not GET request to the PHP file, therefor try to do this first in your PHP file:
if(!$_POST['commentNewCount']){
die("No post request sent");
}elseif(isset($_GET['commentNewCount'])){
die('It was a GET request :)');
}
First of all thanks to all of you. With all your answers I manage to solve my problem, now I feel like I should tell what I did (most based in your answers) and conclude that my error was because a very simple thing.
In the end I did to versions of my front file (the one with the jQuery code). As you mention in some answers I check the server side, I tried to get the response of server with console.log and to achieve this I also hardcode my server side php file like this:
$commentsNewCount = $_POST['commentNewCount'];
$more_comments->bindParam(':limits', 2, PDO::PARAM_INT);
$more_comments->execute();
And I get an error about I can't reference a parameter so I changed to this:
$more_comments->bindValue(':limits', 2, PDO::PARAM_INT);
That fixed the last error but now I had the problem with the 500 POST error, first I tried to print with console.log and what i get was an empty array [] so I run in console I run in console my php file. I found the error there! My variable $commentsNewCount had been taken as a string so in the end I just changed this line to this:
$more_comments->bindValue(':limits', intval($commentsNewCount), PDO::PARAM_INT);
And wow! Now it's working. Following advice I write two versions so I can learn, one was the one I proposed first and the other with .ajax; look:
The original:
<script type="text/javascript">
//jQuery code!
$(document).ready(function() {
var commentCount = 2;
$("button").click(function() {
commentCount += 2;
//console.log("Coment Count: " + commentCount);
$("#comments").load("load-comments.php", {
'commentNewCount': commentCount
});
});
});
</script>
The one with .ajax
<script type="text/javascript">
//jQuery code!
$(document).ready(function() {
var commentCount = 2;
$("button").click(function() {
commentCount += 2;
$.ajax({
type: "POST",
url: "load-comments.php",
data:"commentNewCount=" + commentCount,
success: function(data)
{
console.log(data);
}
});
});
});
</script>
Thank you again for all your advice. And I hope my answer is well redacted as well.