Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Ajax重定向';s的PHP脚本_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

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和其他输出创建一个单独的页面。