2016-08-22 60 views
1

所有我有一個表單提交數據到一個PHP文件插入發佈數據到一個CSV文件,我正在升級這個表單與AJAX工作,所以用戶不必刷新提交頁面,爲什麼我在位置0 parsererror的JSON中收到錯誤Unexpected token <?

但我有一個問題即時得到的錯誤

Unexpected token < in JSON at position 0 parsererror

和林不完全知道這意味着什麼,我測試了我的開發服務器上的這種形式和它的工作一個魅力和我抄它橫跨並做了一些微小的調整形式ID其領域來驗證等,但現在我得到的錯誤,林不知道爲什麼,有什麼想法?

<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文件

<?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

是法典規定由你完成代碼?因爲,我無法在'

'中看到'lname'。 –

+0

而且,從你的''中定義的'crackcode'是什麼? –

+0

試試json_encode($ return,1); –

回答

1

,你是從服務器接收不是有效的JSON響應。 您可能以xml格式獲得響應。 這可能是由於php頁面產生錯誤。檢查響應是否由php頁面生成。同時檢查php頁面是否有足夠的權限在生產服務器上執行。

檢查瀏覽器控制檯以查看由php文件生成的響應。

+0

乾杯我認爲它寫入的CSV文件的權限也會保持不變,但顯然我必須在我的CVS上擁有777權限才能工作,對可寫CSV文件有什麼正確的文件權限 – MrJoshFisher

+0

我沒有知道什麼是正確的文件許可。 777總能完成工作。 :-P – Joyson

+0

確實如此,如果安全是一個因素,666會起作用嗎? – MrJoshFisher

0

我一直得到此錯誤:

"Unexpected token < in JSON at position 0"

解決方案:

  • 我被從JavaScript(與dataType: "json",通過AJAX)發送一個數到PHP。
  • 我沒有意識到的是,這個數字在到達php之前會轉換爲字符串。
  • 因此,爲了使用發送值在PHP端做查詢等,我需要用intval將其轉換回數字:

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

相關問題