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

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.

Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
26880
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 novembre 2019
1901
1
Merci
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

Dire « Merci » 1

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

CCM 67421 internautes nous ont dit merci ce mois-ci

jordane45
Messages postés
26880
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 novembre 2019
1901 -
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
26880
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 novembre 2019
1901
0
Merci
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
0
Merci
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 :)