2015-04-08 5 views
1

Я хочу добавить данные в мою базу данных, передав их как строку json, а затем используя php, что я сделал, но добавляет пустую строку в базу данных вместо добавления данных, которые я отправил, и i получить предупреждение («сбой») сообщение, где есть ошибка, пожалуйста, здесь моя функция сохраненияВставить в базу данных с помощью json jquery и php

function save(){ 
    var eml = document.getElementById("tbemail").value; 
    var mp = document.getElementById("tbmdp").value; 
var data = {email: eml, mdp: mp}; 
      $.ajax({ 
      url: "http://localhost:800/test/insert.php", 
      type: 'POST', 
      dataType: 'json', 
      data: JSON.stringify(data), 
      contentType: "application/json; charset=utf-8", 
      success: function (data) {      
           alert('success'); 
            }, 
       error: function() { 
           alert("fail");    
            } 
     }); 

и вот мой файл PHP insert.php

<?php 
$json = isset($_POST['data']) ? $_POST['data'] : ""; 
$new=json_decode($json, true); 
$conn= mysqli_connect("localhost","root","") or die ("could not connect to mysql"); 
mysqli_select_db($conn,"bd") or die ("no database"); 
$sql = "INSERT INTO user (email,mdp) VALUES ('".$new['email']."','".$new['mdp']."') "; 
$insert=mysqli_query($conn, $sql); 
if ($insert) { 
echo "created "; 
} else { 
echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 
?> 
+0

Какова структура вашей строки json? –

+0

Я считаю, что использование stringify было бы нецелесообразным, и вам не нужно будет использовать json-декодирование –

ответ

0

вы можете попробовать это:

JS:

function save(){ 
    var eml = document.getElementById("tbemail").value; 
    var mp = document.getElementById("tbmdp").value; 
var data = {email: eml, mdp: mp}; 
      $.ajax({ 
      url: "http://localhost:800/test/insert.php", 
      type: 'POST', 
      dataType: 'json', 
      data: data, 
      contentType: "application/json; charset=utf-8", 
      success: function (data) {      
       alert('success'); 
      }, 
       error: function() { 
        alert("fail");  
      }  
     }); 
} 

PHP код:

<?php 
$email = isset($_POST['email']) ? $_POST['email'] : ""; 
$mdp = isset($_POST['mdp']) ? $_POST['mdp'] : ""; 

$new=json_decode($json, true); 
$conn= mysqli_connect("localhost","root","") or die ("could not connect to mysql"); 

mysqli_select_db($conn,"bd") or die ("no database"); 



$sql = "INSERT INTO user (email,mdp) VALUES ('".$email."','".$mdp."') "; 
$insert=mysqli_query($conn, $sql); 
if ($insert) { 
echo "created "; 
} else { 
echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 


?> 
+0

Даже если есть ошибка в коде .. –

+0

Является ли это, что почтовые переменные попадают на сервер? –

+0

привет, я попытался получить данные на php, как это $ data = json_decode (file_get_contents ('php: // input')); $ email = $ data -> email; $ mdp = $ data -> mdp; он добавляет данные в базу данных , но моя функция js по-прежнему печатает «сбой», о чём ошибка, о которой вы говорите, пожалуйста? –

0

Получить данные, используя этот путь в PHP

$data = json_decode(file_get_contents('php://input')); 
$email = $data ->email; 
$mdp = $data ->mdp; 
+0

thnx alot добавляет в базу данных, но он все еще печатает сообщение об ошибке –

+0

попытайтесь удалить 'dataType: 'json'' из вашего кода ajax –

+0

OMG it works thnx alot bro <3 –

0

В вашем PHP, каждый отдельный переменную, вы проходящее через (т.е. email и mdp) передается как отдельные данные $_POST, а не одна переменная $_POST, называемая «данными». Сразу же после вашего открытия PHP тег, проверить электронную почту и MDP:

$email = (isset($_POST['email']) ? $_POST['email'] : ""); 
$mdp = (isset($_POST['mdp']) ? $_POST['mdp'] : ""); 

$conn= .... 
0

Вы можете попробовать это:

function save(){ 
     var eml = document.getElementById("tbemail").value; 
     var mp = document.getElementById("tbmdp").value; 
    var data = {'email': eml,'mdp': mp}; //json 
       $.ajax({ 
       url: "http://localhost:800/test/insert.php", 
       type: 'POST', 
       dataType: 'json', 
       data: data,//pass it here 
       contentType: "application/json; charset=utf-8", 
       success: function (data) {      

        alert('success'); 
       }, 
        error: function() { 


         alert("fail");  


       }  


      }); 



    } 

PHP:

<?php 
if(isset($_POST['email'],$_POST['mdp']) { 
$conn= mysqli_connect("localhost","root","") or die ("could not connect to mysql"); 

mysqli_select_db($conn,"bd") or die ("no database"); 



$sql = "INSERT INTO user (email,mdp) VALUES ('".$_POST['email']."','".$_POST['mdp']."') "; 
$insert=mysqli_query($conn, $sql); 
if ($insert) { 
echo "created "; 
} else { 
echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
} 
} 

?> 
+0

спасибо, что я сделал Я попытался получить данные на php, как это $ data = json_decode (file_get_contents ('php: // input')); $ email = $ data -> email; $ mdp = $ data -> mdp; он добавляет данные в базу данных, но моя функция js по-прежнему печатает «сбой», что ошибка u –

+0

консолирует данные из функции succes, чтобы просмотреть результаты php или найти страницу на вкладке сети – madalinivascu

0

попробовать, как это,

function save(){ 
    var eml = document.getElementById("tbemail").value; 
    var mp = document.getElementById("tbmdp").value; 
var data = {email: eml, mdp: mp}; 
      $.ajax({ 
      url: "http://localhost:800/test/insert.php", 
      type: 'POST', 
      // dataType: 'json', 
      data: {"data":JSON.stringify(data)}, 
      // contentType: "application/json; charset=utf-8", 
      success: function (data) {      

       alert('success'); 
      }, 
       error: function() { 


        alert("fail");  

      }  

     }); 
} 
0

Попробуйте следующее:

function save() { 
    var eml = document.getElementById("tbemail").value; 
    var mp = document.getElementById("tbmdp").value; 
    var data = {email: eml, mdp: mp}; 
      $.ajax({ 
       type: 'POST', 
       url: "http://localhost:800/test/insert.php", 
       //dataType: 'json', 
       data: {"data": JSON.stringify(data)}, 
       //contentType: "application/json; charset=utf-8", 
      success: function (data) { 
       if (data == 'created') 
        alert('Success'); 
       else 
        alert('Fail'); 
      }  
     }); 
} 
Смежные вопросы