Novax a raison, je ne suis pas spécialement pour l'utilisation de jQuery, mais quitte à l'inclure dans ta page, autant utiliser $.ajax (ou inversement, utiliser JSON.parse et les querySelector)
Sinon le message d'erreur indique que le parse du JSON échoue car ton JSON n'est pas valide, et c'est normal vu que e.target.responseText est une chaine vide et qu'une chaine vide n'est pas un JSON valide.
Vérifie déjà que les données sont bien dans la réponse depuis l'onglet network des devtools chrome.
Bon, alors, après vérification de l'upload sur la console réseau firefox, il s'avère que j'ai une erreur 500 lorsqu'il demande le fichier upload.php qui me permet d'exécuter le script.
A quoi pourrais être dû l'erreur 500 ? Sachant que le site en production est en https...
Des idées car j'avoue que là, ça me dépasse un peu... :/
Un oiseau né dans une cage ne peut pas concevoir le mot liberté.
Yop, comme les précédents messages, je ne saisis pas vraiment.. tu as importé jQuery mais tu ne l'utilises pas pleinement ?
Ensuite, si tu as une erreur 500, c'est que la page n'éxiste pas (vérifie son emplacement), ou que ton fichier .php contient des erreurs qui empêchent l'execution du script dans son intégralité, vérifie les points virgule.. ou que tout est bon (ce qui est sur, c'est que ça ne l'est pas!)
Pour jQuery, je ne l'utilise pas pleinement car j'envoie des informations d'header pour un upload multiple et comme je sais pas faire la méthode $.ajax avec des headers, je le fais en xhr en attendant de trouver... (sinon, je sais comment fonctionne $.ajax).
Et effectivement, je sais que j'ai un problème avec mon fichier upload.php en erreur 500 et après vérification, il s'avère que c'est la fonction getallheaders() de php qui ne veut rien entendre... Pourtant en local, tout fonctionne très bien.
Existe-t-il une autre fonction semblable à celle-ci ?
voici le code php pour info:
<?php
/*session_start();
if($_SESSION['level'] < 2)
{
header('location: index.php');
}
// dit à l'application que l'on renvoie du JSON
header('content-type: application/json');
require('inc/bin/base.class.php');
// récupère tous les headers*/
$h = getallheaders();
// créer une class vide pour le JSON
//$o = new stdClass();
//$o->erreur = null;
// récupère la source donnée en input
//$source = file_get_contents("php://input");
//$nom = explode('.', $h['x-file-name']);
//if(preg_match("#^[0-9]{1,}-[0-9]{1,}$#", $nom[0]))
//$o->content = '<div class="img"><a href="img/galerie/'. $h['x-file-name'] .'" title="'. $h['x-file-name'] .'"><img src="img/galerie/'. $h['x-file-name'] .'" alt="'. $nom[0] .'" class="Adm_galerie_img" /></a></div><div class="infoImg"></div>';
// on déplace le fichier dans le bon dossier
//file_put_contents('img/galerie/'. $h['x-file-name'], $source);
//$base = new base();
//$base->execute('INSERT INTO galerie(url) VALUES(:url)', array('url' => $h['x-file-name']));
/*}else{
echo 'Erreur';
}*/
// Envoie des données JSON
//echo json_encode($o);
?>
EDIT: Sinon, comment on fait passer des headers avec mon fichier via $.ajax si je veut pas m'embêter.. ?
- Edité par detect 26 mai 2017 à 12:03:39
Un oiseau né dans une cage ne peut pas concevoir le mot liberté.
Après relecture de ton code, je te conseil de faire tes vérifications dans le script PHP et non en JS car très facilement contournable, ensuite, peut-être que l'erreur 500 est dû au fait que rien n'est envoyé (peut-être ?) as-tu vérifié dans network que tout est envoyé ? (l'utilisation de var.. dans un try en plus, oriente toi vers "let".)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.