SyntaxError: JSON.parse: unexpected end of data at line 1 column [Résolu/Fermé]

Signaler
Messages postés
6
Date d'inscription
mardi 6 mai 2014
Statut
Membre
Dernière intervention
13 juin 2015
-
Messages postés
6
Date d'inscription
mardi 6 mai 2014
Statut
Membre
Dernière intervention
13 juin 2015
-
Bonjour,

Je suis en train de faire une simple requête Ajax avec jQuery avec une réponse du server au format json. Cela fonctionne bien sur chrome mais cette erreur apparaît sur Firefox

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
http://code.jquery.com/jquery-2.1.4.min.js
Line 4


voici le code js
$("form").submit(function(e){
   e.preventDefault();
   if(exampleInputFile.val() == "")
   {
      return false
   }
   else
   {
   $.ajax({
            url: "upload.php",
            type: "POST",
            data:  new FormData(this),
            contentType: false,
            cache: false,
            processData:false,
            dataType:"json",
            success: function(data)
            {
               console.log(data);
            },
            error: function( data, status, error ) {
                console.log(data);
                console.log(status);
                console.log(error);
            }
        });
}


et PHP

<?php
if(isset($_POST['exampleInputSubmit']))
    {
        if(!empty($_POST['exampleInputText']))
        {
            $nameFile = htmlspecialchars(trim($_POST['exampleInputText']));
            if (preg_match('/[^A-Za-z0-9_\-]/', $nameFile))
            {
                $return["error"] = "test du format nom";
            }
        else
        {
            $return["valide"] = "pas de nom";
        }

        if(isset($return))
        {
            echo json_encode($return);
        }
        else
        {
            $return["valide"] = "Bien";
            echo json_encode($return);
        }
    }
?>


Je précise que je souhaites par la suite faire un Upload d'image.
Je remercie par avance ceux qui veulent bien m'aider.

3 réponses

Messages postés
29141
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 août 2020
2 662
Bonjour,

Déjà.. ton script PHP.. tu peux l'écrire ainsi :
<?php

$exampleInputSubmit = isset($_POST['exampleInputSubmit'])?$_POST['exampleInputSubmit']:NULL;
$exampleInputText = isset($_POST['exampleInputText']) && !empty($_POST['exampleInputText'])?trim($_POST['exampleInputText']):NULL;

$result=array();
$return["valide"] = "Bien";

 if($exampleInputSubmit){
  if($exampleInputText){
   $nameFile = htmlspecialchars($exampleInputText);
   if (preg_match('/[^A-Za-z0-9_\-]/', $nameFile)){
     $return["error"] = "test du format nom";
   } else {
    $return["valide"] = "pas de nom";
   }
  }
}
echo json_encode($return);
?>


Cordialement,
Jordane
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 56917 internautes nous ont dit merci ce mois-ci

Messages postés
29141
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 août 2020
2 662
Voir même ... sans le exempleInputSubmit .. qui me semble superflu.
<?php

$exampleInputText = isset($_POST['exampleInputText']) && !empty($_POST['exampleInputText'])?trim($_POST['exampleInputText']):NULL;

$result=array();
$return["valide"] = "Bien";

if($exampleInputText){
 $nameFile = htmlspecialchars($exampleInputText);
 if (preg_match('/[^A-Za-z0-9_\-]/', $nameFile)){
   $return["error"] = "test du format nom";
 } else {
  $return["valide"] = "pas de nom";
 }
}

echo json_encode($return);
?>

Messages postés
29141
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 août 2020
2 662
Si le souci persiste .. tu peux essayer de retirer le
 ?> 
de ton script PHP ajax ... il arrive que ça pose problème.
Ne me demande pas pourquoi... je n'en sais rien ... ;-)
Messages postés
6
Date d'inscription
mardi 6 mai 2014
Statut
Membre
Dernière intervention
13 juin 2015

Je te remercie jordane45 pour m'avoir aidé. J'ai testé avec le code que tu as écrit et la requête Ajax fonctionne maintenant sur Firefox. Je vais maintenant pouvoir continuer. Encore merci :)