将 php 数组编码为 js 变量缺少一些数据? [复制]

Posted

技术标签:

【中文标题】将 php 数组编码为 js 变量缺少一些数据? [复制]【英文标题】:Encoding php array into js variable Missing some data? [duplicate] 【发布时间】:2018-03-15 13:47:37 【问题描述】:

我无法从 angularjs 中的 php 数组获取 interview_docs 数据。我尝试了许多 json 编码选项,但没有醒来。如何在 js 中获取 interview_docs 数据 这是我的数组:

Array(
[id] => 1
[tag] => 2
[title] => Test
[job_submission_id] => 0
[job_id] => 14
[candidate_id] => 55
[mail_to] => test@gmail.com
[cc_to] => test@gmail.com
[interviewer] => test@gmail.com
[interview_type] => 1
[interview_date] => 2017-10-04
[from_time] => 00:00:00
[to_time] => 01:00:00
[to_date] => 
[location] => 
[time_zone] => Asia/Kolkata
[status] => 1
[comments] => dwedfwef
[created_by] => 1
[modified_by] => 1
[created_at] => 2017-10-03 12:21:13
[updated_at] => 2017-10-03 12:21:13
[job_title] => Test
[candidate_name] => New t

[candidates] => Array
    (
        [id] => 55
        [first_name] => New
        [last_name] => t
    )

[jobs] => Array
    (
        [id] => 14
        [code] => 10
        [title] => Test
    )

[interview_docs] => Array
    (
        [0] => Array
            (
                [id] => 1
                [interview_id] => 1
                [unique_name] => 2017_10_roa2XKlIDc9gmzmO7TK37rsfuX3YRigqUxbvIYWe.txt
                [name] => first.png
            )

        [1] => Array
            (
                [id] => 2
                [interview_id] => 1
                [unique_name] => 2017_10_6RaAm3MU5ZZ1x4l3q8VLYNhUkgvS3v2ljNZVizm1.png
                [name] => Screenshot (15).png
            )

    )

)

当我这样做时: 变量数据 = <?php echo json_encode($array); ?>; 控制台.log(数据); 我得到了这个

interview_docs:Array(0)
length:0
 __proto__:Array(0)

我无法从 angularjs 中的 php 数组获取 interview_docs 数据。我尝试了许多 json 编码选项,但没有唤醒。如何获取 interview_docs 数据

【问题讨论】:

你需要使用JSON_FORCE_OBJECT echo json_encode($array,JSON_FORCE_OBJECT) 没有变化@saad 你需要展示你是如何生成$array的。你有没有做过print_r($array['interview_docs']) 以确保它在编码之前确实包含数据? 你检查json_last_error_msg()了吗?它返回什么? 【参考方案1】:

如果你想对你的数据进行编码,那么你的数组应该看起来像这样......

如果您想访问数组的任何元素,我还注释了一行。

我在几分钟前测试过了,现在你只需要使用 angularjs 的 $http 服务来连接它就可以连接这个后端了。

希望对您有所帮助:)

<?php

error_reporting(E_ALL);
ini_set('display_errors',1);

$array=array(
    "id"=>1,
    "tag"=>2,
    "title"=>"Test",
    "job_submission_id"=>0,
    "job_id"=>14,
    "candidate_id"=>55,
    "mail_to"=>"test@gmail.com",
    "cc_to"=>"test@gmail.com",
    "interviewer"=>"test@gmail.com",
    "interview_type"=>1,
    "interview_date"=>"2017-10-04",
    "from_time"=>"00:00:00",
    "to_time"=>"01:00:00",
    "to_date"=>"",
    "location"=>"",
    "time_zone"=>"Asia/Kolkata",
    "status"=>1,
    "comments"=>"dwedfwef",
    "created_by"=>1,
    "modified_by"=>1,
    "created_at"=>"2017-10-03 12:21:13",
    "updated_at"=>"2017-10-03 12:21:13",
    "job_title"=>"Test",
    "candidate_name"=>"New t",
    "candidates"=>array(
        "id"=>55,
        "first_name"=>"New",
        "last_name"=>"t"
    ),
    "jobs"=>array(
        "id"=>14,
        "code"=>10,
        "title"=>"Test"
    ),
    "interview_docs"=>array(
        "0"=>array(
                "id"=>1,
                "interview_id"=>1,
                "unique_name"=>"2017_10_roa2XKlIDc9gmzmO7TK37rsfuX3YRigqUxbvIYWe.txt",
                "name"=>"first.png"
        ),
        "1"=>array(
                "id"=>2,
                "interview_id"=>1,
                "unique_name"=>"2017_10_6RaAm3MU5ZZ1x4l3q8VLYNhUkgvS3v2ljNZVizm1.png",
                "name"=>"Screenshot (15).png"
        )
    )
);
// echo "unique_name from interview_docs is: <b>".$array["interview_docs"][0]["unique_name"]."</b><br><br>"; // You can access to data like this :)
echo json_encode($array);
?>

【讨论】:

问题已超过一年,该问题没有提供足够的信息来回答,并且用户从未接受过他们提出的问题的答案。不用为此烦恼的所有充分理由。 不用担心;真正的谜团是谁认为这个问题值得 7 票。【参考方案2】:

首先你必须 die() 将它编码为 JSON,然后你可以 console.log() 它在 .js 中:

die(json_encode($array));

【讨论】:

以上是关于将 php 数组编码为 js 变量缺少一些数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将此对象转换为 PHP 中的数组

将php变量/数组数据传递给角度js

将 js 数组发布到 PHP 并在数据库查询中使用它

PHP当中如何将数组当中的字符串数据类型转化为数值类型?

通过 POST 将 JSON 编码的变量从 PHP 传递到 Javascript

从多个PHP数组创建JSON