简体   繁体   中英

SyntaxError: Unexpected end of JSON input

I can record data in my db but ajax loading doesn't inter in success method. What's the problem?

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();
}
?>

script

   $("#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

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

your jquery ajax call should include

dataType: 'html',

to explicitly state that the data coming back from the server is html

in fact you're taking result and putting it straight into the DOM node with id statusText


Then you have to fix a major issue: your PHP script is not returning ( echo ing) any data !


Bottom note: you really should use mysqli for your db queries http://php.net/manual/en/book.mysqli.php and also use prepared statements to build up the query (instead building up the SQL query by concatenating strings).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM