J'ai travaillé sur une fonctionnalité de suppression de publication dans mon projet. Tout fonctionne bien en PHP, mais j'aimerais maintenant le faire en Ajax, pour empêcher l'actualisation et tout le reste.
En tout cas, quand j'effectue mon appel ajax, j'obtiens une erreur:
SyntaxError: Unexpected end of JSON input
at Object.parse (native)
at n.parseJSON (http://localhost/imdstagram/public/js/jquery-2.2.3.min.js:4:6401)
at Ab (http://localhost/imdstagram/public/js/jquery-2.2.3.min.js:4:8347)
at z (http://localhost/imdstagram/public/js/jquery-2.2.3.min.js:4:11804)
at XMLHttpRequest.<anonymous> (http://localhost/imdstagram/public/js/jquery-2.2.3.min.js:4:15680)
Il dit que cette erreur est sur la ligne 35, la ligne 35 m'envoie à
console.log(error);
Quoi qu'il en soit, pour vous donner une meilleure vue, voici mon appel à Ajax:
$(document).ready(function(){
$(".post__delete").on("click", function(e){
var postDeleteID = $('.deleteID').val();
$.ajax({
url: "ajax/deletePost.php",
type: "POST",
data: JSON.stringify(postDeleteID),
dataType: 'json',
contentType: false,
cache: false,
processData: false,
success: function(data)
{
},
error: function (request, status, error) {
console.log(error);
}
});
e.preventDefault();
});
});
Et mon code deletePost.php:
<?php
include_once("../classes/Post.class.php");
session_start();
$post = new Post();
if(!empty($_POST)){
$deletePostID = $_POST['deletePostID'];
$post->deletePost($deletePostID);
if($post->deletePost($deletePostID)){
$status['delete'] = "success";
} else {
$status['delete'] = "failed";
}
header('Content-Type: application/json; charset=utf-8', true);
echo json_encode($status);
}
?>
J'ai essayé beaucoup de choses comme changer le dataType et le contentType, mais rien ne semble fonctionner.
Votre demande est erronée, vous ne devriez pas envoyer de JSON si vous comptez utiliser le super global $ _POST. Envoyez-le sous forme de données de formulaire encodées en url standard
$.ajax({
url: "ajax/deletePost.php",
type: "POST",
data: {postDeleteID: postDeleteID},
dataType: 'json',
cache: false,
success: function(data)
{
},
error: function (request, status, error) {
console.log(error);
}
});
Essayez de changer le dataType en 'text' et le contentType en 'application/json'
Vous "supprimez" le message deux fois.
Supprimer cette ligne: $post->deletePost($deletePostID);
C'est un problème très étrange dans les frameworks et PHP en général, dans votre contrôleur:
echo(json_encode($status));
A travaillé pour moi ..