我想知道是否可以通过 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。
感谢任何帮助。
最佳答案
是的,数组是你最好的选择。尽管如此,还是采用 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
}
}
});
关于javascript - 将 PHP 值显示到不刷新的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25510738/