我是REST API的新手。我一直在看教程等,但没有运气。
我需要使用表单将数据(和GET,没有表单)POST到数据库中,然后通过ajax将其发送到我的REST API以执行SQL。
一切都可能是错的,或者只是其中的一部分,我不知道(我使用了混合的教程)。
这是我的API(test / api / user_api.php)
$host = " *** ";
$user = "217129_xt71575";
$dbName = "217129-test";
$password = " *** ";
$link = mysqli_connect($host, $user, $password, $dbName);
mysqli_query($link, "SET NAMES utf8");
mysqli_query($link, "SET CHARACTER SET utf8");
$method = $_SERVER['REQUEST_METHOD'];
$request = explode('/', trim($_SERVER['PATH_INFO'], '/'));
$input = json_decode(file_get_contents('php://input'), true);
$table = preg_replace('/[^a-z0-9_]+/i', '', array_shift($request)); // I DON'T THINK THIS IS FOR ME?
$key = array_shift($request)+0; // I DON'T THINK THIS IS FOR ME?
$columns = array_keys($input);
$values = array_values($input);
//$columns = array('email', 'fname', 'lname'); // Used this to try
//$values = array('j@example.com', 'jonna', 'hedlund'); // Used this to try
$set = '';
for ($i=0;$i<count($columns);$i++) {
$set .= ($i > 0 ? ', ' : '' ). '' . $columns[$i] . ' = ?';
}
switch ($method) {
case 'GET':
show_users($link);
break;
case 'POST':
insert_user($link, $set, $values);
}
function show_users($link) {
$result = mysqli_query($link, "SELECT * FROM test_users");
$rows = array();
while($row = mysqli_fetch_array($result)) {
$rows[] = $row;
}
return json_encode($rows);
}
function insert_user($link, $set, $values) {
$stmt = $link->prepare("INSERT INTO test_users SET $set");
$stmt->bind_param("ssss", $values[0], $values[1], $values[2]);
$stmt->execute() OR die();
// THEN return something?
}
这是我的ajaxfile(test / app.js)
$(document).ready(function() {
var form = document.getElementById("userform");
$('.add_user').click(function(event) {
event.preventDefault();
var data = {};
for(var i = 0, ii = form.length; i < ii; i++){
var input = form[i];
if(input.name) {
data[input.name] = input.value;
}
}
addUser(data);
});
function addUser(data) {
var check = JSON.stringify(data);
alert(check);
$.ajax({
type: "POST",
url: "/api/user_api.php",
data: JSON.stringify(data),
contentType: "application, json; charset=utf-8",
crossDomain: true,
dataType: "json",
success: function (data, status, jqXHR) { // I'm only used to using 'text' here..
alert('success');
},
error: function (jqXHR, status) { // I'm only used to using 'text' here..
console.log(jqXHR);
alert('fail: ' + status.code);
}
});
}
});
最后我的“形式”(test / index.php)
<form action="" id="userform">
<input type="email" name="email" placeholder="email">
<input type="text" name="fname" placeholder="fname">
<input type="text" name="lname" placeholder="lname">
</form>
<button type="submit" name="submit" class="add_user">send</button>
我已经尽力理解这一切的逻辑,但没有运气,你有什么建议吗?对我来说真正新鲜的事情是REST API和使用JSON。