2016-10-17 126 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調用應包括

dataType: 'html',

,明確規定將數據從服務器回來是HTML

在你服用result並把它直入事實具有編號的DOM節點statusText


然後,您必須解決上述問題主要問題:您的PHP腳本未返回echo ing)任何數據


底部注:真的應該使用mysqli的爲你的數據庫查詢http://php.net/manual/en/book.mysqli.php,還可以使用準備的語句來建立查詢(而不是通過連接字符串建立SQL查詢)。

+0

謝謝你,保羅,你解決了我的問題!我也感謝你的寶貴幫助和澄清。 我有一個noob問題給你:爲什麼PHP腳本必須返回數據? 預先感謝您 – Otto

+0

PHP腳本不一定要返回數據。它可能會完成它的工作並且靜靜地退出。但在你的例子中,AJAX查詢需要返回數據,所以PHP腳本應該發送一些東西!如果PHP腳本出於某種原因失敗(例如無法寫入數據庫),那麼讓腳本返回成功/失敗狀態並讓前端JavaScript代碼檢查該狀態是一種很好的做法。 – Paolo

+0

明白了!非常感謝! :) – Otto

相關問題