将数据PHP多维数组传递给Javascript

时间:2013-01-02 04:44:49

标签: php javascript jquery json multidimensional-array

我在这个网站上搜索了一个解决方案,但不幸的是,根本没用,所以我决定问你们。希望你帮助我。

我有这个将文件推送到数组中的PHP文件。

PHP文件:

$out_html = array();
$type1_ach = array(
    "title" => $ach_info[0], //Title1 is Value of $ach_info[0]
    "description" => $ach_info[1] //Description1 is Value of $ach_info[1]
);
array_push($out_html, $type1_ach);

$type5_ach = array(
    "title" => $ach_info[0], //Title2 is Value of $ach_info[0]
    "description" => $ach_info[1] //Description2 is Value of $ach_info[1]
);

array_push($out_html, $type5_ach);

我用JSON回应它,因为我通过jquery传递它。

echo json_encode($out_html);

这是我的HTML文件,它应该输出我从PHP文件传递的数据。

HTML文件:

function test_pop() {
    var fb_id = "1**************"; //Facebook ID
    var v_id = "***********"; //Video ID

$.post('http://mysite.com/test.php', {fb_id: fb_id, v_id: v_id}, function(data) {
    var obj = $.parseJSON(data);
    var title = obj.title;
    var description = obj.description;
    var whole_ach = "You obtained " + title + "<br>" + description;
    console.log(whole_ach);

});
}

它在控制台日志中输出响应:

您获得了undefined&lt; br&gt;未定义

然后,如果我将变量var title = obj.title;更改为var title = obj.title[0];description = obj.description进入description = obj.description[0]它会提供输出(响应)

未捕获的TypeError:无法读取未定义的属性“0”

所需的输出应为您获得了Title1&lt; br&gt; Description1 ,但不幸的是我似乎做不到。

希望你们帮助我,谢谢。

2 个答案:

答案 0 :(得分:1)

您应该收到一个对象数组。所以data是一个数组,但你把它视为一个对象。

尝试循环遍历数组:

$.each(obj,function( index, item){    
   console.log( item.title);    
})

或者,如果您想直接访问主数组中的值:

console.log( obj[0].title);

答案 1 :(得分:1)

需要更新JavaScript代码:

function test_pop() {
    var fb_id = "1**************"; //Facebook ID
    var v_id = "***********"; //Video ID

$.post('http://mysite.com/test.php', {fb_id: fb_id, v_id: v_id}, function(data) {
    var obj = $.parseJSON(data);
    var title = obj[0].title;
    var description = obj[0].description;
    var whole_ach = "You obtained " + title + "\n" + description;
    console.log(whole_ach);

});
}

您需要指定数组索引号:

    var title = obj[0].title;
    var description = obj[0].description;

希望有所帮助。