使用和显示对象数据、PHP和json/jquery
在将对象数据从jquery传递到PHP时,我遇到了麻烦。我还在努力想办法让我的头脑清醒过来 代码如下:使用和显示对象数据、PHP和json/jquery,php,oop,Php,Oop,在将对象数据从jquery传递到PHP时,我遇到了麻烦。我还在努力想办法让我的头脑清醒过来 代码如下: <script type ="text/javascript"> $(function() { $(".button").click(function() { //alert("click"); var jsonvar1 = {"skillz": {
<script type ="text/javascript">
$(function() {
$(".button").click(function() {
//alert("click");
var jsonvar1 = {"skillz": {
"web":[
{"name": "html",
"years": "5"
},
{"name": "css",
"years": "3"
}],
"database":[
{"name": "sql",
"years": "7"
}]
}};
$.ajax({
url: "test2.php",
type: 'POST',
data: 'regemail=' + jsonvar1,
success: function(result) {
alert(result);
},
error:function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
}
});
});
});
</script>
</head>
<body>
<input type="button" id="regSubmit" class="button" value="Register!" /></br></span>
<script>
$('input[type=button]').attr('disabled', false);
//alert('test');
</script>
$(函数(){
$(“.button”)。单击(函数(){
//警报(“点击”);
var jsonvar1={“skillz”:{
“网络”:[
{“名称”:“html”,
“年”:“5”
},
{“名称”:“css”,
“年”:“3”
}],
“数据库”:[
{“名称”:“sql”,
“年”:“7”
}]
}};
$.ajax({
url:“test2.php”,
键入:“POST”,
数据:“regemail=”+jsonvar1,
成功:功能(结果){
警报(结果);
},
错误:函数(xhr、ajaxOptions、thrownError){
警报(xhr.状态);
警报(thrownError);
}
});
});
});
$('input[type=button]').attr('disabled',false);
//警报(“测试”);
上面的代码做3件事。捕获一个按钮点击,然后:eclares一个变量(jsonvar1),并对该变量执行一个到PHP后端的ajax请求
现在,PHP后端中的代码:
if (filter_has_var(INPUT_POST, "regemail")) {
$data = $_REQUEST["regemail"];
//echo "<br>I got some data!</br>";
//print_r($data);
//echo $data->skillz;
//echo $data;
var_dump($data);
} else {
echo "No Data.";
}
if(过滤器有变量(输入后,“regemail”)){
$data=$_请求[“regemail”];
//echo“
我得到了一些数据!”;
//打印(数据);
//echo$data->skillz;
//回波数据;
var_dump($数据);
}否则{
回显“无数据”;
}
(安全地忽略上面PHP中的所有回音和转储。这将是我试图以某种方式使用数据时的苦恼)
问题:如何将PHP中对象的数据拉入变量或数组,或者如果您愿意,如何直接处理该对象中的值?(假设它是一个对象,并且我没有犯其他无关的错误)
我想知道我是否忘记告诉我的请求它是JSON
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
编辑:
我试图添加
echo json_解码($data);
我的PHP代码,但它返回一个空白数据集
我还试图把
数据类型:“json”,
在我的ajax查询中
似乎仍然没有任何运气。您将希望在服务器端使用它
if (filter_has_var(INPUT_POST, "regemail")) {
$data = $_REQUEST["regemail"];
//echo "<br>I got some data!</br>";
//print_r($data);
//echo $data->skillz;
echo json_encode($data);
} else {
echo "No Data.";
}
if(过滤器有变量(输入后,“regemail”)){
$data=$_请求[“regemail”];
//echo“
我得到了一些数据!”;
//打印(数据);
//echo$data->skillz;
echo json_编码($data);
}否则{
回显“无数据”;
}
您遇到了一个很容易忽略的简单错误:jsonvar1包含一个对象,当您使用+运算符将其连接到“regemail=”时,它会变成一个字符串,但不是您想要的方式。结果字符串为“[object]”,因为JSON转换不是自动完成的。相反,这条线应该是
data: 'regemail=' + JSON.stringify(jsonvar1),
在PHP文件中,行
$data = json_decode( $data );
正如@sirlancelot已经说过的那样,将为您提供一个要使用的对象。您研究过PHP json函数()吗?我可能错了,但我认为json_decode正是您要寻找的。嗯,这返回[object object],我注意到您接受了我的答案,但您的评论表明存在问题。你遇到别的事了吗?