我尝试在函数执行后从 A.php 加载 B.php ,并使用来自 A.php <的帖子数组传递一些数据/ strong>在同一时间内 B.php 。
代码列表如下 A.php
<script type="text/javascript">
alert_for_the_fucntion();
window.location.href = "B.php";
function alert_for_the_fucntion() {
$.post("B.php", {action: 'test'});
}
</script>
B.php
<?php
if (array_key_exists("action", $_POST)) {
if ($_POST['action'] == 'test') {
echo 'ok';
}
}
?>
出于测试目的,我试图回应 B.php 中的内容。但目前这不起作用。我做过任何错误吗?或者有没有可行的方法来做到这一点。
答案 0 :(得分:3)
您的代码执行此操作:
POST请求可能被取消,因为浏览器立即离开页面(并且XHR请求是异步的)。如果没有,则忽略响应。无论哪种方式,它都没有效果。
然后,您会在浏览器窗口中看到GET请求的结果(显然,它不包含$_POST['action']
)。
如果您想以编程方式生成POST请求并将结果显示为新页面,则需要提交表单。
不要使用location
。不要使用XMLHttpRequest
(或任何包围它的内容,例如$.ajax
)。
var f = document.createElement("form");
f.method = "POST";
f.action = "B.php";
var i = document.createElement("input");
i.type = "hidden";
i.name = "action";
i.value = "test";
f.appendChild(i);
document.body.appendChild(f);
f.submit();
如果您想用JavaScript处理结果,那么:
done
处理程序e.g。
$.post("B.php", {action: 'test'}).done(process_response);
function process_response(data) {
document.body.appendChild(
document.createTextNode(data)
);
}
答案 1 :(得分:1)
试试这个:
使用Javascript:
<script type="text/javascript">
window.onload = alert_for_the_fucntion;
function alert_for_the_fucntion() {
$.post("B.php",
{
action: 'test'
},
function(data, status){
if(status=="success"){
alert(data);
}
}
);
}
</script>
PHP
<?php
if(isset($_POST['action'])){
echo $_POST['action'];
}
?>