2016-10-17 22 views
0

データベースにデータを記録することはできますが、Ajaxの読み込みは成功メソッドではありません。どうしたの?SyntaxError:JSON入力の予期しない終了

error: "SyntaxError: Unexpected end of JSON input 
    at Object.parse (native) 
    at n.parseJSON " 

record_data.php

<?php 
$type=getPar_empty("type",$_GET,""); 
$new_nome=$_GET['new_nome']; 
$new_cognome=$_GET['new_cognome']; 
$new_email=$_GET['new_email']; 
$new_lingua=$_GET['new_lingua']; 
if ($type=="add_user"){ 
    $stmt=null; 
    $stmt=$db->prepare("INSERT INTO newsletter_utenti(email,abilitato,nome,cognome,lingua,lista,data_creazione,unsubscribe) VALUES('$new_email',1,'$new_nome','$new_cognome','$new_lingua','manual',now(),0)"); 
    if (!$stmt) { 
    log_msg($db->error); 
    die(); 
    } 
    $stmt->execute(); 
    $stmt->close(); 
    $db->close(); 
} 
?> 

スクリプト

$("#salvaBtn").click(function(){ 
    var nome = $('#nome').val(); 
    var cognome = $('#cognome').val(); 
    var email = $('#email').val(); 
    var lingua = $('#lingua').val(); 
    var dataString = 'nome='+nome+'&cognome='+cognome+'&email='+email+'&lingua='+lingua+'&type=add_user'; 
    $.ajax({ 
    type:'GET', 
    data:dataString, 
    url:"record_data.php", 
    success:function(result) { 
       $("#status_text").html(result); 
       $('#nome').val(''); 
       $('#cognome').val(''); 
       $('#email').val(''); 
    }, 
    error:function(xhr,status,error) { 
     console.log(error); 
    } 
    }); 
}); 

$('#adduser').submit(function(){ 
    return false; 
}); 

形態

<form name="adduser" id="adduser" method="GET" action="#"> 
      <div class="col-md-3"> 
       <div class="form-group m-b-30"> 
       <p>E-mail</p> 
       <input class="form-control" type="email" id="email" name="email" placeholder="indirizzo e-mail" email required> 
       </div> 
      </div> 
      <div class="col-md-3"> 
       <div class="form-group m-b-30"> 
       <p>Nome</p> 
       <input class="form-control" type="text" id="nome" name="nome" placeholder="nome"> 
       </div> 
      </div> 
      <div class="col-md-3"> 
       <div class="form-group m-b-30"> 
       <p>Cognome</p> 
       <input class="form-control" type="text" id="cognome" name="cognome" placeholder="cognome"> 
       </div> 
      </div> 
      <div class="col-md-3"> 
       <div class="form-group m-b-30"> 
       <p>Lingua</p> 
       <select class="form-control" id="lingua" name="lingua"> 
        <option value="it">IT</option> 
        <option value="en">EN</option> 
       </select> 
       </div> 
       <input type="submit" class="btn btn-embossed btn-primary m-r-20" id="salvaBtn" value="Aggiungi utente"></input> 
       <div id="status_text" /></div> 
      </div> 
      </form> 

答えて

1

あなたのjqueryのAJAX呼び出しは、明示的にサーバーからのデータは、HTML

実際にあなたがresultを取っているし、まっすぐにそれを入れていることを述べること

dataType: 'html',

を含める必要がありますIDを持つDOMノードstatusText


次に修正する必要があります問題:あなたのPHPスクリプトは返されませんecho ing)任意のデータ


ボトムノート:本当にがあなたのDBのmysqliのを使用する必要がありますがhttp://php.net/manual/en/book.mysqli.phpを照会しても、(代わりに文字列を連結して、SQLクエリを構築する)クエリを構築するために準備されたステートメントを使用しています。

+0

ありがとう、パオロ、あなたは私の問題を解決しました!私は貴重な助けと明確化に感謝します。 私はあなたのための質問があります:なぜPHPスクリプトはデータを返さなければならないのですか? ありがとうございました – Otto

+0

PHPスクリプトは必ずしもデータを返す必要はありません。それはその仕事をして、静かに出るかもしれません。しかし、あなたの例ではAJAXクエリはデータを返すことを期待しているので、PHPスクリプトは何かを送信することになっています!なんらかの理由でPHPスクリプトが失敗した場合(例えば、DBに書き込めない場合)、スクリプトの成功/失敗ステータスを返すこと、およびそのステータスをフロントエンドのjavascriptコードでチェックすることは良い方法です。 – Paolo

+0

ポイントを得ました!どうもありがとうございます! :) – Otto

関連する問題