2008-12-26 29 views
18

所以我有一个从数据库中获取的记录数组。该数组是格式;在PHP和Javascript之间传输数组的最佳方式

$rows[0]['id']=1; 
$rows[0]['title']='Abc'; 
$rows[0]['time_left']=200; 


$rows[1]['id']=2; 
$rows[1]['title']='XYZ'; 
$rows[1]['time_left']=300; 
//And so on upto 10-20 rows 

将这个数组传递给我的JavaScript代码的最佳方式是什么?我希望JavaScript能够遍历所有记录,并使用'id'属性,使用该id更新div并提供一些信息。

我的javascript代码是在一个外部的.js文件中,但我能够在我的页面的HTML代码中执行php代码。所以,我可以做这样的事情:

在my_file.js:

var rows=New Array(); 

在HTML代码:

<html> 
<head> 
<script type="text/javascript" src="js/my_file.js"></script> 

<script type="text/javascript"> 
<? foreach ($rows as $row):?> 
<? extract($row);?> 
rows[<?=$id;?>]['title']="<?=$title;?>"; 
//And so on 
<? endforeach;?> 
</script> 

回答

28

我倾向于使用JSON对象是:

  • 在服务器端,JSON编码你的da ta:json_encode($data);
  • 在JavaScript方面,我编写了一个函数,它将JSON对象作为参数并将其解压缩。

当您打开的对象,就可以打印出数组的内容为<DIV>标签,或在任何你想在页面上(jQuery不会的这是一个非常甜蜜的工作)。

+2

您怎么打开使用javascript JSON对象?你可以添加一些示例代码和解压对象的样本到你的答案吗? 谢谢 – 2008-12-26 05:17:51

+0

看看这个:http://ditio.net/2008/07/17/php-json-and-javascript-usage/ – Stuart 2008-12-26 05:34:03

1

要跟进您的问题(和我的答复,我跑出的评论回复空间),这里是我使用的代码的一个非常简化的子集:

的Javascript AJAX处理jQuery中:

$.ajax({ 
    type: "POST", 
    url: "BACKEND.php", 
    timeout: 8000, 
    data: "var1=" + myVar, 
    dataType: "json", 
    error: function(){ 
    $("#DIVID").html("<div class='error'>Error!</div>"); 
    }, 
    success: function(jsonObj){ 
    $("#DIVID").html(jsonObj.mydata); 
    } 
}); 


PHP Array: 
$data['mydata'] = $myData; 
10

如果你正在做内联数据,我一直喜欢做

<script type="text/javascript"> 
window.sitescriptdata = {}; 
window.sitescriptdata.foo = (<?php echo json_encode($structure); ?>); 
</script> 

对于基本的东西,可以节省你做一个AJAX回调。另外,如果你想将数据粘贴到DOM节点,“元对象”方式是我真正喜欢的。

<div id="foobar"> 
<div><object class="metaobject"> 
     <param name="data" value="<?php echo htmlentities(json_encode($data), ENT_QUOTES);?>" /> 
</object></div> 
</div> 

现在,这可能不是很好看,但它无需知道该节点的确切唯一路径数据直接与DOM节点相关联的有效途径。如果你有很多很多数据集需要附加到特定的屏幕元素,那么它非常方便。

我通常使用http://noteslog.com/metaobjects/的jQuery插件,但它的这么简单我也偶尔写它自己(有一段时间我找不到插件,但新的它是如何工作)

完成后,有将

$( “#DIV FOOBAR> DIV”)。得到()数据。($ yourarrayhere)

显示给你的代码。

0

即时通讯仍然相当新也说这个方法不是最安全的,但你可以随时把你的JavaScript数组变成一个字符串,然后通过它的URL传递给PHP的GET。

这样:

for(var i=0;i < jsarray.length;i++) 
{ 
var x = jsarray[i]; 
urlstring += "myvalue[]="+x+"&"; 
} 

document.location.href = "mypage.php?"+urlstring; 

,然后PHP将是:

$phparray = $_GET['myvalue']; 

希望帮助

1

在AJAX例如像here你可以这样解决这个问题:

.php文件(ajax返回函数)

$myArray = array("object_id"=>1, "object_title"=>"Testobject"); 
return json_encode($myArray); 

.js文件(JavaScript函数)

... 
if(g_httpRequest.readyState == 4) 
{ 
var jsonRes = JSON.parse(g_httpRequest.responseText); 
alert(jsonRes.object_title) 
} 
... 
相关问题