Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象到数组并编码-php到js对象_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 对象到数组并编码-php到js对象

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

我将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("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?