Javascript 如何从jquery ajax调用中获取json字符串?
为什么控制台日志为:{} 我在以下ajax调用中遇到了一个问题:Javascript 如何从jquery ajax调用中获取json字符串?,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,为什么控制台日志为:{} 我在以下ajax调用中遇到了一个问题: $.ajax({ url: '.../models/user.php', type: 'POST', dataType: "json", data: {username: username, password:password, func:func}, success: function(data) { console.log(data); } }
$.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中的用户对象。我遗漏了什么吗?您正在使用json\u encode方法传递一个类对象 对于将对象转换为Json的php,必须实现JsonSerializable接口: 这样,您就可以使用json_编码来传递对象,而不会出现任何问题 您使用的方法实现代码如下:
get_object_vars($this)
所以您的用户类必须如下所示
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\u编码,那么该类的私有属性将永远不可见
因此,如果你改变:
private $username = '';
private $password = '';
致:
结果将是:
{
username: "some-user-name"
}
因为您将数据类型设置为json,所以当将其设置为json时,jQuery将自动将json文本解析为对象。如果只需要文本,请将数据类型更改为文本。
{
username: "some-user-name"
}