将 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_OBJECTecho 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 变量缺少一些数据? [复制]的主要内容,如果未能解决你的问题,请参考以下文章