Javascript 从Ajax重定向';s的PHP脚本
我有一张这样的表格:Javascript 从Ajax重定向';s的PHP脚本,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我有一张这样的表格: <form action="process.php" method="post"> <input type="text" name="input" /> <button type="submit">Submit</button> </form> $("button").click(function(event) { var $ajaxData = { "input-val"
<form action="process.php" method="post">
<input type="text" name="input" />
<button type="submit">Submit</button>
</form>
$("button").click(function(event) {
var $ajaxData = {
"input-val" : $("input").val();
}
$.ajax({
type : "POST",
url : "process.php",
data : $ajaxData,
dataType : "json",
encode : true
});
.done(function($data) {
alert($data["stat"]);
});
event.preventDefault();
$("form").unbind();
});
还有一个PHP脚本(process.PHP),用于发送表单数据:
<?php
if(isset($_POST['input-val'])) {
$data['stat'] = 'success';
echo json_encode($data);
}
?>
所有内容都正确且已设置,但是,如果我想阻止用户查看或(手动)进入“process.php”页面,我会添加一个重定向函数:
<?php
if(isset($_POST['input-val'])) {
$data['stat'] = 'success';
echo json_encode($data);
}
header('Location: index.php');
?>
这使得Ajax的请求自动失败如何阻止用户访问或查看PHP脚本?正如我所说,“event.preventDefault();”正在阻止Ajax将用户发送到PHP脚本,但用户可以自己去那里。问题是,脚本需要JSON,而“重定向”代码将
HTTP 301
发送到HTML文件。最终,AJAX XHR不会看到您的JSON,而是获得HTML输出
将代码还原到以前的状态:
<?php
if(isset($_POST['input-val'])) {
$data['stat'] = 'success';
echo json_encode($data);
}
根据评论:
如果您在未设置$\u POST
的情况下进行重定向,请使用else
:
if (isset($_POST['input-val'])) {
$data['stat'] = 'success';
echo json_encode($data);
} else {
header('Location: index.php');
}
问题是,脚本需要JSON,而“重定向”代码将
HTTP301
发送到HTML文件。最终,AJAX XHR不会看到您的JSON,而是获得HTML输出
将代码还原到以前的状态:
<?php
if(isset($_POST['input-val'])) {
$data['stat'] = 'success';
echo json_encode($data);
}
根据评论:
如果您在未设置$\u POST
的情况下进行重定向,请使用else
:
if (isset($_POST['input-val'])) {
$data['stat'] = 'success';
echo json_encode($data);
} else {
header('Location: index.php');
}
只有当发布的值不存在时,才可以有条件地重定向(或只是终止脚本)。但是考虑到用户可以将自己的数据发布到PHP脚本中。另请参见。您可以将标题放在一个
else
语句中:如果(isset(…){/*做点什么*/}其他{header(“…”);}
您的var$ajaxData
defn?@胡言乱语中是否缺少等号是的,这是我在这里写问题的时候:|不用担心,只是想指出它。希望您的问题现在得到解决。您可以有条件地重定向(或只是终止脚本),前提是发布的值不存在。但是考虑到用户可以将自己的数据发布到PHP脚本中。另请参见。您可以将标题放在一个else
语句中:如果(isset(…){/*做点什么*/}其他{header(“…”);}
您的var$ajaxData
defn?@胡言乱语中是否缺少等号是的,这是我在这里写问题的时候:|不用担心,只是想指出它。希望您的问题现在得到解决。他们不是在ajax请求后重定向,而是在您没有发出ajax请求时从php页面重定向。@JonathanKuhn啊,我明白了。@ElcompJR最好为JSON和其他输出boss创建一个单独的页面。他们不是在ajax请求后重定向,而是从php页面重定向如果您没有发出ajax请求,则返回php页面。@JonathanKuhn啊,我明白了。@ElcompJR最好为JSON和其他输出创建一个单独的页面。