2012-12-29 88 views
0

我正在用php腳本抓取一個網站,並在最後創建一個數組,我想要發送回javascript調用方函數。在下面的代碼中,我試圖用'print_r'打印出來,它根本不給我任何結果(?)。如果我回顯元素(例如$ addresses [1]),則顯示該元素。從PHP發送數組到javascript

那麼,爲什麼我沒有從PHP函數中獲取任何東西,以及將數組發送回調用js函數的最佳方法是什麼?

非常感謝!

JS:

$.post( 
    "./php/foo.php", 
    { 
    zipcode: zipcode 
    }, 
    function(data) { 
    $('#showData').html(data); 
    } 
); 

PHP:

$tempAddresses = array(); 
$addresses = array(); 

$url = 'http://www.foo.com/addresses/result.jspv?pnr=' . $zipcode; 

$html = new simple_html_dom(); 
$html = file_get_html($url); 

foreach($html->find('table tr') as $row) { 
    $cell = $row->find('td', 0); 

    array_push($tempAddresses, $cell); 
} 

$tempAddresses = array_unique($tempAddresses); 

foreach ($tempAddresses as $address) { 
    array_push($addresses, $address); 
} 

print_r($addresses); 
+1

http://php.net/manual/en/function.json-encode.php – Prinzhorn

+0

嘗試用回聲json_encode( $地址); –

回答

4

您可以使用JSON將數組返回給客戶端,它可以通過AJAX發送,與您在現有代碼中執行的操作相同。

PHP的使用json_encode(),此功能將使您的PHP數組轉換成JSON字符串,你可以使用它通過使用AJAX

在你的PHP代碼發送回客戶端(只是爲了演示它的工作原理)

json.php

<?php 
$addresses['hello'] = NULL; 
$addresses['hello2'] = NULL; 
if($_POST['zipcode'] == '123'){ //your POST data is recieved in a common way 
    //sample array 
    $addresses['hello'] = 'hi'; 
    $addresses['hello2'] = 'konnichiwa'; 
} 
else{ 
    $addresses['hello'] = 'who are you?'; 
    $addresses['hello2'] = 'dare desu ka'; 
} 
echo json_encode($addresses); 
?> 

然後在您的客戶端腳本(更好的使用jQuery的AJAX長路)

$.ajax({ 
    url:'http://localhost/json.php', 
    type:'post', 
    dataType:'json', 
    data:{ 
     zipcode: '123' //sample data to send to the server 
    }, 
    //the variable 'data' contains the response that can be manipulated in JS 
    success:function(data) { 
      console.log(data); //it would show the JSON array in your console 
      alert(data.hello); //will alert "hi" 
    } 
}); 

引用

http://api.jquery.com/jQuery.ajax/

http://php.net/manual/en/function.json-encode.php

http://json.org/

+0

謝謝。試了一下,但我只是空回到js功能:/ – holyredbeard

+0

我在我身邊做了同樣的事情,它工作正常。請仔細檢查PHP代碼。 –

+0

反正我懷疑你的網址,請確保根據你如何通過網絡瀏覽器訪問php文件來更正它 –

1

JS應該是

$.ajax({ 
    url:'your url', 
    type:'post', 
    dataType:'json', 
    success:function(data) { 
     console.log(JSON.stringify(data)); 
    } 
    }); 

服務器

$tempAddresses = array(); 
$addresses = array(); 

$url = 'http://www.foo.com/addresses/result.jspv?pnr=' . $zipcode; 

$html = new simple_html_dom(); 
$html = file_get_html($url); 

foreach($html->find('table tr') as $row) { 
    $cell = $row->find('td', 0); 

    array_push($tempAddresses, $cell); 
} 

$tempAddresses = array_unique($tempAddresses); 

foreach ($tempAddresses as $address) { 
    $arr_res[] =$address; 
} 
header('content-type:application/json'); 
echo json_encode($arr_res); 
+0

'JSON.parse'替代'JSON.stringify' –

+1

@fireeyedboy JSON.stringify它顯示結果作爲字符串在控制檯,否則作爲對象,只是爲了如何數據來 –

+0

啊是的,我明白了。當然。 –