0

我的系统上有一个脚本,提供活动接口列表 -

 $ interfaces
 eth0
 lo
 wlan0

现在这是我的 PHP 代码 -

 <?php
 $output=shell_exec('./interfaces');
 $string = trim(preg_replace('/\s+/', ' ', $output));
 $string = str_replace("\0","",$string);
 $data = preg_split('/\s+/',$string);  // There was a typo here, changed $output to  
                                        //  $string 
 echo json_encode($data);
?>

我的jQuery去了-

    $.getJSON('nw/sample1.php', function(data) {

    $(data).each(function(i,item) {

            alert(item);

    });

    });

我希望应该有3一个可见的警报框,每个突出显示一个活动界面。

例如,第一个警报框应该说"eth0",第二个说"lo"等等,但它没有按预期工作。

我对这一切都很陌生,所以我很清楚我在哪里弄错了?

谢谢

编辑 :

sample1.php 在浏览器中的输出

 ["eth0","lo","wlan0"]

**$.each(data, ...) 和 $data.each ... ** 两者的行为方式相同。

console.log(data) 输出 在此处输入图像描述

4

2 回答 2

0

在通知客户header('Content-Type: application/json');之前添加-json_encode($data)parse it as json instead of text/HTML

所以,

<?php
 $output=shell_exec('./interfaces');
 $string = trim(preg_replace('/\s+/', ' ', $output));
 $string = str_replace("\0","",$string);
 $data = preg_split('/\s+/',$string);  // There was a typo here, changed $output to  
                                        //  $string 

 header('Content-Type: application/json'); // ## ADDED this line ##
 echo json_encode($data);
?>

现在,您javascript/jquery应该能够做 - 您期望它做的事情!

请尝试恢复!

于 2013-04-18T10:10:18.177 回答
0

我认为你的问题只是 nw/sample1.php

我在 sample1.php 中使用了一个“普通”字符串,而 $getJSON 就像一个魅力,所以我将重点介绍如何检索存储在“接口”文件中的数据。只需将 sample1.php 中的代码替换为以下代码即可检查 jQuery JSON 是否正常工作:

<?php
$string = 'eth0 lo wlan0';
$string = str_replace("\0","",$string);
$data = preg_split('/\s+/',$string);
echo json_encode($data);
于 2013-04-18T10:42:25.310 回答