[英]How to display output of shell script at runtime in php page using ajax
[英]How do I display a PHP script as html page after calling it using AJAX?
我正在尝试调用一个php
文件,它将显示一个 html 页面,使用我的 js 中的 AJAX。 这是我的 php 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Snippet details</title>
</head>
<body>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
require "../server_detail.php";
$con=mysqli_connect($server,$username,$pass);
$connection=mysqli_select_db($con,$database);
if(!$connection)
echo "Connection to database failed! Please try again";
else{
$sql="SELECT `Snapshot` FROM `snippet` WHERE `Date`='".$_POST["date"].
"' AND `newspaper`='".$_POST["newspaper"]."' AND `Subject_desc`='".$_POST["news_desc"]."'";
$result = $con->query($sql);
$temp=explode('.',$result->fetch_array()[0]);
echo "<div style=
'text-align:center; vertical-align: middle;
background-color: #FFFFFF; margin: 0 auto !important;
min-height: 100%; padding: 0; width: 978px !important; overflow:auto;'>";
echo "<h3>{$_POST['newspaper']}</h3>";
if($temp[count($temp)-1]=="pdf" || $temp[count($temp)-1]=="PDF")
echo "<iframe src='{$result->fetch_array()[0]}' height='200px'>";
else
echo "<img src='{$result->fetch_array()[0]}' height='200px'>";
echo "<p>{$_POST["news_desc"]}</p>";
echo "</div>";
}
$con->close();
?>
</body>
</html>
我试图从我的js
调用这个脚本(当按下li
时):
document.querySelector('body').addEventListener('click', function(event) {
if (event.target.tagName.toLowerCase() === 'li') {
var str=event.target.innerText.split('-');
$.ajax({
url: '/all_backend_stuff/view_page.php',
type: 'POST',
data:{
"date":document.getElementById("date").value,
"newspaper":str[0],
"news_desc":str[1]
},
success:function(response){
window.open('/all_backend_stuff/view_page.php'); //shows that all my array keys are undefined
},
complete:function(){}
});
}
});
我的 POST 变量显示为undefined
。 这是为什么?
访问 URL 的不同方式表现不同。
如果您使用<a href="...">
那么浏览器将从 URL 加载数据并将其显示为新页面。
如果您使用<img src="...">
,那么浏览器会从 URL 加载数据,并在当前页面的那个点内联显示图像。
如果您使用<iframe src="...">
那么浏览器将从 URL 加载的数据显示在当前页面的一个框中的页面中。
如果您使用 Ajax,那么浏览器将从 URL 加载数据,并使其对 JavaScript 可用。
这就是Ajax的意义所在。
它不会将结果显示为新页面,因为 Ajax 设计为不这样做。
如果您想将结果显示为新页面,那么最好不要使用 Ajax 。 请改用常规<form>
提交。
如果你坚持使用 Ajax 那么你需要处理你
当前
的数据,在你编辑问题之前,记录并使用它更改当前页面的 DOM 。 通常,当您执行此操作时,您需要请求 URL 和 Ajax,返回结构化数据(例如 JSON 格式),然后有选择地更新页面的某些部分,而不是加载一个全新的 HTML 文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.