将PHP值显示到不刷新的页面

时间:2014-08-26 16:28:03

标签: javascript php jquery ajax

我想知道是否可以通过PHP修改一个不刷新的页面(我使用Ajax)。

这听起来像是一个愚蠢的问题,我99.999999肯定不可能。我能想到的唯一方法就是如果我输出一个带有值的数组并使用javascript来修改页面。

我需要返回多个内容,这就是为什么我不想使用javascript并与ajax通信,但我认为数组是唯一的选择。

if(isset($_FILES['payload'])) {
$file = $_FILES['payload'];
try {
$file['name'] = htmlentities($file['name']);
  $name = $file['name'];
$extension = pathinfo($name, PATHINFO_EXTENSION);
$finfo = new finfo;
$fileinfo = htmlentities($finfo->file(htmlentities($file['tmp_name']), FILEINFO_MIME));
} catch (Exception $e) {
    echo "NULL NAME";
}
  if($extension == 'exe' && (substr($fileinfo, 0, 15) == 'application/exe' || substr($fileinfo, 0, 21) == 'application/x-dosexec')) {
try {
  /*
   * Encryption Removed
   */
  mkdir("REMOVED");
  move_uploaded_file($file['tmp_name'], "REMOVED");
  $td[0] = filesize("REMOVED");
  $td[1] = htmlentities($file['name']);
  $td[2] = $fileinfo;
  echo "NULL NULL";
} catch(Exception $e2) {
  echo "NULL ENCRYPTION";
}
} else echo "NULL FILESTATUS";

以上是我目前所拥有的,我为糟糕的格式道歉。 $ td是包含文件信息的数组 - 这是我需要返回javascrpt的内容,但我还需要返回另一个变量,即NULL FILESTATUS,NULL ENCRYPTION,NULL NAME或NULL NULL。

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

是的,数组是你最好的选择。尽管如此,JSON编码。

$ret = array();
$ret['status'] = true/false;

然后将您的echo语句更改为message

$ret['message'] = 'NULL NAME';
$ret['message'] = 'NULL FILESTATUS';
$ret['message'] = 'NULL NULL ENCRYPTION';
$ret['message'] = 'NULL NULL';

然后将文件信息添加为子数组。

$ret['file'][0] = filesize("REMOVED");
$ret['file'][1] = htmlentities($file['name']);
$ret['file'][2] = $fileinfo;

最后,将编码为JSON的数组返回到javascript。

echo json_encode($ret);

然后你的ajax函数应如下所示:

$.ajax({
    type: 'GET/POST',
    url: 'path/to/my/script.ext',
    dataType:'json',
    success: function(response){
        if(response.status == true){
            //handle the rest of the returned array
        }
    }
});

答案 1 :(得分:1)

这实际上很常见,你说得对,PHP无法在服务后直接更新页面。如果那是你想做的事情,就无法完成。

然而,使用AJAX它很容易,它实际上是你用AJAX做的。尝试在具有您要使用的信息的对象上使用PHP的json_encode,然后使用AJAX获取该页面,并使用javascript更新相关的页面元素。您还可以查看AngularJS以便更轻松地完成此过程。