我想将一个json对象发布到php。
var user = {username:"test", password:"test", name:"test",
email:"test@hotmail.com"};
var str_json = JSON.stringify(user);
$.ajax({
url: '/register_API.php',
type: 'post',
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log('success');
},
data: user
});
}
在php中我想将其插入到mysql中:
$data = file_get_contents('php://input');
$json = json_decode($data,true);
$username = $json['username'];
$password = $json["password"];
$email = $json['email'];
$insertSql = "INSERT INTO users (username, password, email)
VALUES ('$username', '$password', '$email');";
$ data字符串包含:username = test& password = test& name = test& email = test%40hotmail.com,但我无法通过解码来获取变量...
提前致谢!
答案 0 :(得分:2)
将data: user
更改为data: str_json
然后
更改$data = file_get_contents('php://input');
到$data = $_POST['data']
答案 1 :(得分:1)
您没有发送JSON字符串,您正在发送一个Javascript对象,jQuery正在转换为传出POST请求中的一组参数。您的数据将以$ _POST的形式提供给PHP - 无需先解码。
这样看:
$username = $_POST['username'];
$password = $_POST["password"];
$email = $_POST['email'];
答案 2 :(得分:0)
我认为您希望将原始JSON作为文本发送,并将其放在帖子正文中,而不是作为编码表单处理。
在这种情况下,我认为您的PHP代码是正确的。按原样发送字符串化的JSON,但将数据类型设置为dataType:" text"。
我认为你可以用
阅读它$ data = file_get_contents(' php://输入');
答案 3 :(得分:0)
我认为你可以使用
//works like explode, but splits your data where finds "=" and "&" too.
$output = preg_split( "/ (=|&) /", $data);
这将返回您的数据数组。其中:
$output[0]="Username";
$output[1]="test";
如果您有固定数据,这可能很有用。