2008-12-26 92 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) 
} 
... 
相關問題