2016-08-22 16 views
1

私はCSVファイルに投稿データを挿入するPHPファイルにデータを送信するフォームを持っています。このフォームをajaxで動作するようにアップグレードしていますので、投稿時にページを更新する必要はありません。なぜエラーが発生しますか?予期しないトークン<JSONの位置0のparsererrorでエラーが発生しますか?

しかし、私は問題イム

Unexpected token < in JSON at position 0 parsererror

とイムではない、それは私が私のdevのサーバー上でこのフォームをテストしてみたし、それが魅力を働いたと私はコピー何を意味するのか全くわからエラーを取得を抱えていますそれは間接的にいくつかの小さな微調整をフォームの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

try 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"

はソリューション:

  • 私はPHPに(dataType: "json",とAJAX経由)JavaScriptから番号を送信していました。
  • 私が気づいていなかったのは、その数がPHPに達する前に文字列に変換されるということでした。
  • だから、PHP側などクエリを実行するためにその送信された値を使用するためには、私がintvalを使用してバックナンバーにそれを変換するために必要な:

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

関連する問題