[英]How do i get a json string in js from a jquery ajax call?
为什么控制台日志:{}我在js中有以下ajax调用:
$.ajax({
url: '.../models/user.php',
type: 'POST',
dataType: "json",
data: {username: username, password:password, func:func},
success: function(data) {
console.log(data);
}
});
并在我的user.php中
switch ($_POST['func']) {
case 'register':
$user = new User();
$a = $user->register($_POST['username'], $_POST['password']);
$b = json_encode($a);
echo $b;
break;
}
class User {
private $username = '';
private $password = '';
Function register($user, $code) {
//..database things...
if(succes){
$newUser = new User();
$newUser->username = $user;
$newUserInJason = json_encode($newUser);
return $newUser;
}
}
}
控制台日志仅为{},但我想要JSON中的User对象。 我想念什么吗?
您正在使用json_encode方法传递Class对象。
对于将对象转换为Json的php,您必须实现JsonSerializable接口: JsonSerializable接口文档
这样,您可以使用json_encode毫无问题地传递对象该方法实现使用以下代码:
get_object_vars($this)
所以您的User类必须看起来像这样
class User implements JsonSerializable{
// Interface method you must implement:
public function jsonSerialize(){
return get_object_vars($this);
}
// The rest remains the same
private $username = '';
private $password = '';
Function register($user, $code) {
//..database things...
if(succes){
$newUser = new User();
$newUser->username = $user;
$newUserInJason = json_encode($newUser);
return $newUser;
}
}
我猜你应该返回$newUserInJason
如果在类上使用json_encode,则该类的私有属性将永远不可见。
因此,如果您更改:
private $username = '';
private $password = '';
至:
public $username = '';
private $password = '';
结果将是:
{
username: "some-user-name"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.