2016-08-22 2 views
1

Alle ich habe ein Formular, das Daten an eine PHP-Datei übermittelt, die die Post-Daten in eine CSV-Datei einfügt, ich aktualisiere dieses Formular mit Ajax arbeiten, so dass der Benutzer nicht die Seite bei einer Einreichung aktualisieren müssen,Warum erhalte ich den Fehler Unexpected token <in JSON an Position 0 parsererror?

Aber ich bin ein Problem im mit den Fehler bekommen

Unexpected token < in JSON at position 0 parsererror

und im nicht ganz sicher, was es bedeutet, dass ich diese Form auf dem Server meines dev getestet habe und es einen Zauber gearbeitet und ich kopierte es über und machte ein paar winzige zwickt die Form ID seine Felder zu validieren etc, aber jetzt bekomme ich den Fehler und ich bin nicht sicher, warum, irgendwelche Ideen?

<form id="form2" name="form2"> 
    <div id="response"></div> 
    <table> 
     <tr><td><input type="text" name="fname" id="fname" placeholder="First Name"/></td><td><input type="text" name="lname" id="lname" class="required" placeholder="Surname"/></td></tr> 
     <tr><td><input type="text" name="email" id="email" placeholder="Email"/></td><td><input type="text" name="postcode" id="postcode" placeholder="Postcode"/></td></tr> 
     <tr><td colspan="2"> 
      <p>Safe Combination</p> 
      <select name="number1"> 
       <option value="0">0</option> 
       <option value="1">1</option> 
       ... 
      </select> 
      <select name="number2"> 
       <option value="0">0</option> 
       <option value="1">1</option> 
       ... 
      </select> 
      <select name="number3"> 
       <option value="0">0</option> 
       <option value="1">1</option> 
       <option value="2">2</option> 
       ... 
      </select> 
      <select name="number4"> 
       <option value="0">0</option> 
       <option value="1">1</option> 
       ... 
      </select> 
      <select name="number5"> 
       <option value="0">0</option> 
       <option value="1">1</option> 
       ... 
      </select> 
      <select name="number6"> 
       <option value="0">0</option> 
       <option value="1">1</option> 
       ... 
      </select></td></tr> 
     <tr><td colspan="2"><input class="btn btn-danger" type="submit" value="SUBMIT" id="submit" name="submit"/></td></tr> 
    </table> 
</form> 

JS

<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s=" crossorigin="anonymous"></script> 
     <script type="text/javascript"> 
      $(document).ready(function(){ 
       $('form#form2').submit(function (e) { 

        e.preventDefault(); 

        // Get the Login Name value and trim it 
        var fname = $.trim($('#fname').val()); 
        var lname = $.trim($('#lname').val()); 
        var email = $.trim($('#email').val()); 
        var postcode = $.trim($('#postcode').val()); 
        // Check if empty of not 

        var valid = ''; 

        if (fname === '') { 
         //alert('First Name is empty.'); 
         valid+ 'First Name is empty.'; 
         //return false; 
        } 
        if (lname === '') { 
         //alert('Last Name is empty.'); 
         valid+ 'Last Name is empty.'; 
         //return false; 
        } 
        if (email === '') { 
         //alert('Email is empty.'); 
         valid+ 'Email is empty.'; 
         //return false; 
        } 
        if (postcode === '') { 
         //alert('Postcode is empty.'); 
         valid+ 'Postcode is empty.'; 
         //return false; 
        } 
        if(valid != '') { 
         $('#form2 #response').addClass('alert alert-danger').html("Errors - " + valid) 
        } else { 
         $('#form2 #response').removeClass('alert alert-danger').addClass('alert alert-warning').html("<i class='fa fa-spinner fa-spin'></i> Processing the form"); 
         var formData = $('#form2').serialize(); 
         submitForm(formData); 
        } 
       }); 
      }); 

      function submitForm(formData) { 
       $.ajax({ 
        type: 'POST', 
        url: 'comp/checker.php', 
        data: formData, 
        dataType: 'json', 
        cache: false, 
        timeout: 7000, 
        success: function(data) { 

         $('#form2 #response').removeClass('alert alert-warning').addClass((data.error === true) ? 'alert alert-danger' : 'alert alert-success').html(data.msg); 
        }, 
        error: function(XMLHttpRequest, textStatus, errorThrown) { 
         $('#form2 #response').html('Something else went wrong :/ ' + errorThrown + textStatus); 
        }, 
        complete: function(XMLHttpRequest, status) { 
         $('#form2')[0].reset();   
        } 
       }); 
      } 


     </script> 

PHP Datei

<?php 
    //header('Content-type: application/json'); 
    sleep(5); 

    //if (!empty($_POST)) { 


     $date = date("d/m/Y"); 
     $fname = trim($_POST['fname']); 
     $lname = trim($_POST['lname']); 
     $email = trim($_POST['email']); 
     $postcode = trim($_POST['postcode']); 

     $number1 = $_POST['number1']; 
     $number2 = $_POST['number2']; 
     $number3 = $_POST['number3']; 
     $number4 = $_POST['number4']; 
     $number5 = $_POST['number5']; 
     $number6 = $_POST['number6']; 

     $totalnumber = $number1 . '' . $number2 . '' . $number3 . '' . $number4 . '' . $number5 . '' . $number6; 

     $list = array("$date, $fname, $lname, $email, $postcode, $totalnumber"); 

     $file = fopen("contacts_2.csv","a"); 

     foreach ($list as $line) {fputcsv($file,explode(',',$line));} 

     fclose($file); 

     //HEADER TO INDEX.PHP 


     $return['error'] = false; 
     $return['msg'] = "<p>Thanks for your feedback</p>"; 
     echo json_encode($return); 
     exit(); 

    //} else { 
    // $return['error'] = true; 
    // $return['msg'] = "<p>Something went wrong, please retry in a few minutes</p>"; 
    // echo json_encode($return); 
    // exit(); 
    //} 

    ?> 
+0

Ist Code bereitgestellt von Ihnen ist der vollständige Code? Weil ich 'Lname' in Ihrem' 'nicht sehen kann. –

+0

Und woher wird 'crackcode' in'

'definiert? –

+0

versuche json_encode ($ return, 1); –

Antwort

1

Die Antwort, die Sie vom Server erhalten keine gültige Json ist. Sie erhalten wahrscheinlich die Antwort im XML-Format. Dies könnte an einem Fehler liegen, der von der PHP-Seite generiert wurde. Überprüfen Sie, ob die Antwort von der PHP-Seite generiert wird. Überprüfen Sie außerdem, ob die PHP-Seite über ausreichende Berechtigungen zum Ausführen auf dem Produktionsserver verfügt.

Überprüfen Sie die Browser-Konsole, um die von der PHP-Datei generierte Antwort zu sehen.

+0

Prost ich dachte, die Berechtigungen für die CSV-Datei, die es geschrieben hat, würde gleich bleiben, aber anscheinend muss ich 777 Erlaubnis auf meinem CVS dafür haben, was ist die richtige Datei Berechtigungen auf eine beschreibbare CSV-Datei haben – MrJoshFisher

+0

Ich habe keine Idee, was die korrekte Dateierlaubnis wäre. 777 macht immer die Arbeit erledigt. :-P – Joyson

+0

Wahr, aber wenn die Sicherheit ein Faktor ist, würde 666 funktionieren? – MrJoshFisher

0

Ich hielt diesen Fehler:

"Unexpected token < in JSON at position 0"

Lösung:

  • ich eine Reihe von Javascript (über Ajax mit dataType: "json",) Senden an PHP.
  • Was ich nicht erkannte, war, dass die Zahl in eine Zeichenkette umgewandelt würde, bevor sie den php erreichte.
  • , um so, zum gesendeten Wert zu verwenden, um Abfragen usw. auf der PHP-Seite zu tun, musste ich es wieder in eine Zahl konvertieren intval unter Verwendung:

    $gender = intval($_POST["gender"]);

Verwandte Themen