0

我正在使用 php 脚本在屏幕上抓取一个站点,该脚本最终创建了一个数组,我想将其发送回 javascript 调用程序函数。在下面的代码中,我尝试使用“print_r”将其打印出来,这根本没有给我任何结果(?)。如果我在元素上回显(例如 $addresses[1]),则会显示该元素。

那么,为什么我没有从 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);
4

2 回答 2

4

您可以使用 JSON 将数组返回到客户端,它可以通过 AJAX 发送,就像您在现有代码上所做的一样。

使用json_encode()PHP,此函数会将您的 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/

于 2012-12-29T11:53:57.643 回答
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);
于 2012-12-29T11:52:03.577 回答