Javascript 对象到数组并编码-php到js对象
我将Ajax调用发送到AjaxHandler.php页面,AjaxHandler页面调用Functions.php(其他页面)中的其他函数 如果成功,我需要从AjaxHandler.php返回对象,该对象需要有2个参数 以下是ajax调用:Javascript 对象到数组并编码-php到js对象,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我将Ajax调用发送到AjaxHandler.php页面,AjaxHandler页面调用Functions.php(其他页面)中的其他函数 如果成功,我需要从AjaxHandler.php返回对象,该对象需要有2个参数 以下是ajax调用: var month_number = document.getElementById("Month").innerHTML; var year_number = document.getElementById("Year").innerHTML; $.get
var month_number = document.getElementById("Month").innerHTML;
var year_number = document.getElementById("Year").innerHTML;
$.get("AjaxHandler.php", { "year": year_number, "month": month_number }, function (encodedata) {
var data = JSON.parse(encodedata);
$("#LinesPlace").html(data);
});
以下是需要处理的AjaxHandler.php代码:
if(isset($_GET['year'],$_GET['month']))
{
$year = $_GET['year'];
$month = $_GET['month'];
$a = getExpenses($year, $month);
echo $a->pharama;
echo $a->pharamb;
$b = object_to_array($a);
echo $b;
return json_encode($b);
}
现在,当我放置该url时:
http://xxxxxxxxx.com/AjaxHandler.php?year=2015&month=09
它向我展示了pharama和pharamb的回声,但当我尝试将对象转换为数组,然后对其进行解码时,它只是不起作用,我尝试了很多,但什么都没有
以下是对象到数组函数:
//convert php object to array
function object_to_array($data){
if(is_array($data) || is_object($data))
{
$result = array();
foreach($data as $key => $value) {
$result[$key] = $this->object_to_array($value);
}
return $result;
}
return $data;
}
*我从这个网站的其他问题中获取了这个功能
请给出建议=]
问候,,
Rafael.如果需要将JSON解码为数组或对象,
JSON\u decode
有一个专门用于此的参数:
混合json解码(字符串$json[,bool$assoc=false[,int$depth=512[,int$options=0]])…
协会
如果为TRUE,则返回的对象将转换为关联数组 例如:
$json_as_object = json_decode($json, false);
$json_as_array = json_decode($json, true);
尝试手动将对象转换为数组应该是不必要的。您需要使用JSON\u UNESCAPED\u UNICODE对其进行非常明确的编码,如下所示: $jsonObj=json_encode(字符串$json,json_UNESCAPED_UNICODE) 我在一个标准函数中为这类事情编写了这段代码
另外,我认为您在对象到数组函数中过度检查了它。我可能会选择这样的东西:if(is_array($param)){..}Rafael我不能评论需要50个代表或什么:你说:什么意思不必要?你是说我可以按原样返回对象php 如果我说的一半是:你知道你在函数obj_to_array()rigth中输入的东西吗?这是什么进去了,它不是一个物体,为什么要检查它?谁来寄?你是否预见到一个$u的帖子会被包装成一个漂亮的东西,随时准备发布?就我所知,$\u POST/$\u表单通常会默认获取并提供数组?如果您在代码的其他地方生成了一个obj,为什么要将其用作此函数的输入?难道你不知道你在代码的其他地方做什么吗?当然可以,只要简洁、准确,它就不会突然成为从$\u POST返回的对象,也不会是任何通常输出数组或整数等的函数。请在创建输出时检查输出?很好地检查您的web输入(1次!对于js注入),然后只检查您的类型以验证您自己的不明确的输出/输入,例如可以生成数组或真/假返回值的输出。检查此输出值1是否为布尔值的真值可能会导致失望,因为:
如果$a的值是1,那么在if($a)中做某事;然后,1可以是作为生成我们正在检查的内容的函数的结果返回的真值,也可以是count($a)的结果。如果由于对$a的值的错误解释而假定数组的长度为1,那么这会产生意外的结果吗?你想确定是$\u array($a)中的数组在说话,而不是例如数组?我想就这些吧?还是我(又)在闲逛 你什么意思?你是说我可以按原样返回对象php?请解释一下..@Rafael-我的意思是你可以将JSON直接解码到一个数组中,而不是解码到一个对象并试图将其转换成一个数组。最后,我使用这个ajax:$.ajax({url:“AjaxHandler.php”,type:“GET”,data:{“year”:year\u number,“month”:month\u number},数据类型:“JSON”,//jQuery现在将解析返回的数据并返回一个对象成功:function(data){$.each(data,function(i,obj){//现在您可以访问navlos、besedilo和datum var test=obj;$('#LinesPlace').html('+obj+';})});现在一切都好了…=]喇嘛先生,我不能评论,需要50个代表什么的:D你是什么意思?你是说我可以按原样返回对象php?