我正在尝试将JSON发布到PHP,它应该被解码并推送到MySQL数据库。
这是我的JavaScript代码。
var dictstring = "{sensorid: \""+ name +"\", x: " +pos.x +" ,y: "+pos.y+"}";
console.log(dictstring);
$.ajax({
type: "POST",
contentType: 'application/json; charset=utf-8',
dataType: "json",
url: "myfile.php",
data: JSON.stringify(dictstring),
success: function(data){
alert('Success');
},
error: function(e){
console.log(e.message);
}
});
这是我的PHP代码
<?php
$jsonData = file_get_contents('php://input');
$data_back = json_decode($jsonData);
$unit = $data_back->{"sensorid"};
$x_axis = $data_back->{"x"};
$y_axis = $data_back->{"y"};
// Create connection
$con=mysqli_connect("xxxxxxx:xxxx","xxxxx","xxxx","xxxxxxxx");
// Check
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//Insert Values
$sql_hm = "INSERT INTO xxxx(unit, x_axis, y_axis)
VALUES ('$unit', $x_axis, $y_axis)";
if ($con->query($sql_hm) === TRUE) {
echo "values inserted successfully";
} else {
echo "No data ";
}
?>
我知道PHP部分有效 - 我尝试使用来自REST客户端应用程序的contentType:application / json发布JSON数据并且它可以工作。但是,当我使用我的Javascript代码尝试它时,它不是POST。我可以看到&#34; dictstring&#34;控制台中的字符串值。我看不到&#34;成功&#34;警惕。有趣的是,&#34;成功&#34;如果删除dataType,则显示alert:&#34; json&#34;线。但是,POSTing仍然没有发生,因为我看不到数据库中的值。
我在这里缺少什么?
答案 0 :(得分:2)
var dictstring = "{sensorid: \""+ name +"\", x: " +pos.x +" ,y: "+pos.y+"}";
你有一个字符串。
data: JSON.stringify(dictstring),
然后将其转换为该字符串的JSON表示。
$data_back = json_decode($jsonData);
您将其解码为字符串。
$unit = $data_back->{"sensorid"};
你试图像对象那样对待。
从对象开始,而不是字符串:
var dictstring = { sensorid: name, x: pos.x, y: pos.y };
...你可能也想要一个不同的变量名。
答案 1 :(得分:0)
dictstring
已经采用JSON格式,您的JS中不需要JSON.stringify
答案 2 :(得分:0)
dataType: "json"
,则使用 JSON
您可以创建一组消息,然后使用echo json_encode($array);
将JSON
数据返回给您的js。
根据您提供的问题和信息来解决您的问题,我无法找到明显的问题,但我可以建议您在成功函数中使用console.log(data)
,看看是什么退回。您至少知道它是否会访问您的php页面或返回时出现一些错误,例如404
或500.
尝试$data_back['sensorid']
或
只需print_r($data_back);
并查看$data_back
的数据结构,然后尝试相应地访问数据。
答案 3 :(得分:-1)
好吧这可能听起来很傻但是你确定要说明你在java脚本中使用JQuery,因为我已经做了ajax的次数而且我无法弄清楚为什么它不会工作和因为我还没有宣布JQuery。
像这样:<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js">