Javascript $.ajax函数在向web服务发送JSON对象时失败
我编写了一个示例web服务来存储和检索数据。PHP web服务有两个脚本,分别名为getData.PHP和saveData.PHP,getData返回json响应,saveData将json对象保存到数据库中 getData.phpJavascript $.ajax函数在向web服务发送JSON对象时失败,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,我编写了一个示例web服务来存储和检索数据。PHP web服务有两个脚本,分别名为getData.PHP和saveData.PHP,getData返回json响应,saveData将json对象保存到数据库中 getData.php <?php require_once ('../database.php'); mysqli_select_db($conn, $database); $query = "SELECT * FROM user ORDER BY id
<?php
require_once ('../database.php');
mysqli_select_db($conn, $database);
$query = "SELECT * FROM user ORDER BY id ASC";
$result = mysqli_query($conn, $query) or die(mysqli_error($conn));
$rows = array();
while($packages = mysqli_fetch_assoc($result)) {
array_push($rows, $packages);
}
header('Content-type: application/json');
echo json_encode($rows);
?>
<?php
require_once ('../database.php');
mysqli_select_db($conn, $database);
if (isset($_POST['json'])) {
$jsonObj = $_POST['json'];
$jsonObj = json_decode($jsonObj);
$query = "INSERT INTO user (first_name, last_name, description)"
. " VALUES ('".$jsonObj->{'first_name'}."', '".$jsonObj->{'last_name'}."', '".$jsonObj->{'description'}."')";
mysqli_query($conn, $query);
header('Content-type: application/json');
echo json_encode($_POST['json']);
}
?>
当我运行testConsume/index.html并单击submit时,会显示警报消息
Failed
。当我检查数据库时,没有添加任何数据。我做错了什么?删除contentType:'application/json'
您发送的是嵌入在应用程序/x-www-form-urlencoded
数据中的JSON,而不是普通JSON
或者。发送并解析实际的纯JSON:
contentType: 'application/json',
data: JSON.stringify({
first_name: firstName,
last_name: lastName,
description: description
}),
在PHP中:
if (stripos($_SERVER["HTTP_CONTENT_TYPE"], "application/json")===0) {
$jsonObj = json_decode(file_get_contents("php://input"));
}
危险:您很容易受到您需要的攻击。如果成功,请立即调用ajax。但数据不会发送到数据库。我保存到数据库的方式是否有问题?@KasunKodagoda-请参阅对该问题的评论,并使用
mysqli\u error
函数。
contentType: 'application/json',
data: JSON.stringify({
first_name: firstName,
last_name: lastName,
description: description
}),
if (stripos($_SERVER["HTTP_CONTENT_TYPE"], "application/json")===0) {
$jsonObj = json_decode(file_get_contents("php://input"));
}