2016-03-14 3 views
-1

Не могу понять, почему она не вызывает мою php-страницу, которую я хочу использовать для добавления информации в мою базу данных. Вот страница ЯШ:Использование json для передачи информации в мою базу данных

<html> 
<head> 
<script> 
var _lname = 'lname'; 
var _fname = 'fname'; 
var _mname = 'mname'; 
var _gender = 'Male'; 
var _bday = '11/22/1123'; 
var _ssn = '456123456'; 

$.ajax({ 
    type: "POST", 
    url: "/upload.php", 
    data: "{'lastName':'" + _lname + "','firstName':'" + _fname + "','middleName':'" + _mname + "'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(){ 
     alert("Success!") 
    } 
} 

</script> 
</head> 
<body> 
</body> 
</html> 

А вот PHP:

include $_SERVER['DOCUMENT_ROOT'] . "/kowboykit/kowboykit-includes-db.php"; 

$data = $_POST['data']; 
json_decode($data); 
$lastname = json_decode($data['lastName']); 

$sql= "INSERT INTO `Kowboy_Kit`.`test` (`ID`, `Name`) VALUES (NULL, '" . $lastname . "');"; 
$result = $conn->query($sql); 

echo $sql; 
+0

Вы не используете json_decode() правильно. Попробуйте '$ lastname = json_decode ($ data) ['lastName'];' – NineBerry

ответ

1

PHP ожидает key=value пар данных для данных GET/POST. Вы не отправляете это. Вы отправляете голую строку (например, только value), поэтому PHP не имеет ничего, чтобы положить в $ _POST.

Либо сделать

$data = file_get_contents('php://input'); 

или

data: "data={'lastName':'" + _lname + "','firstName':'" + _fname + "','middleName':'" + _mname + "'}", 
     ^^^^^ 

И обратите внимание, что здание, как JSON, что это рискованно. Рассмотрите, что произойдет, если появится кто-то по имени Miles O'Brien - вы будете генерировать незаконный/недействительный JSON, и вся строка json будет отклонена парсером JSON

+0

Пробовал оба изменения, которые были рекомендованы, и он все еще не передает данные или даже вызывает страницу .php. –

+0

Я добавил обработчик только для того, чтобы увидеть, был ли вызов ajax даже загружать страницу .php, и это похоже на то, где я застрял. Im действительно просто пытается получить дескриптор передачи страницы формы данных на страницу, и я понимаю, что ее нужно дезинфицировать, но я действительно не могу понять, почему функция не вызывает php-страницу вообще. –

+0

, добавьте обработчик 'error' к вызову $ .ajax(), посмотрите, не работает ли это. и обратите внимание, что ваш PHP-код уязвим для [sql injection-атак] (http://bobby-tables.com), и поскольку у вас вообще нет обработки ошибок в коде DB, вы просто предполагаете, что он никогда не сможет потерпеть неудачу (плохой плохой предположение). –

Смежные вопросы