Javascript 是否可以阻止将标题(“location:url”)发送到AJAX?

Javascript 是否可以阻止将标题(“location:url”)发送到AJAX?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我在页面上有一个html表单。表单数据通过AJAX发送到PHP脚本。在这个PHP脚本中,使用各种if语句有条件地检查输入中的每个$\u POST。如果条件不符合特定的strlen/其他标准,那么我将在AJAX returndata和exit()PHP脚本中回显一条消息 假设所有条件都满足,我在PHP脚本的底部应用了一个url,该url是从PHP脚本本身中的变量构建的,并在内部连接,如下所示: header(“位置:view_topic.php?tid=”“$tid.”和page=“$page.”

我在页面上有一个html表单。表单数据通过AJAX发送到PHP脚本。在这个PHP脚本中,使用各种if语句有条件地检查输入中的每个
$\u POST
。如果条件不符合特定的
strlen
/其他标准,那么我将在AJAX returndata和
exit()
PHP脚本中回显一条消息

假设所有条件都满足,我在PHP脚本的底部应用了一个url,该url是从PHP脚本本身中的变量构建的,并在内部连接,如下所示:

header(“位置:view_topic.php?tid=”“$tid.”和page=“$page.”)

问题:

$("#topic_form").submit(function(event){
    var formData = new FormData($(this)[0]);
    $.ajax({
    url: 'create_topic_parse.php',
    type: 'POST',
    data: formData,
    async: false,
    cache: false,
    contentType: false,
    processData: false,
        success: function (returndata) {
            if(returndata.indexOf("view_topic") != true){
                $('#message').css("color", "red").html(returndata);
                } else {
                window.location(returndata);
            }
        }
    });
    return false;
});
由于我在PHP脚本中生成url,并且只能在PHP脚本中生成url,因此我必须使用PHP
标题(“位置:…”
作为重定向,或者必须回显url,然后将其发送到returndata,然后在我的JavaScript/AJAX中使用
window.location(returndata)

我已经做了一些功课,并且注意到了header方法的一个已知问题,即当set被发送到AJAX returndata时。这意味着整个标题位置页面将显示在一个不可见的小div中,在该div中,我显示了在PHP脚本中生成的上述条件错误消息的错误

问题:

$("#topic_form").submit(function(event){
    var formData = new FormData($(this)[0]);
    $.ajax({
    url: 'create_topic_parse.php',
    type: 'POST',
    data: formData,
    async: false,
    cache: false,
    contentType: false,
    processData: false,
        success: function (returndata) {
            if(returndata.indexOf("view_topic") != true){
                $('#message').css("color", "red").html(returndata);
                } else {
                window.location(returndata);
            }
        }
    });
    return false;
});
下面的代码是我设置
窗口位置(returndata)
的替代方法

这里我回显由PHP变量生成的实际url,它将其发送到returndata。然而,当提交表单时,我返回到同一页面,返回的数据只是从顶部的PHP中回显出来

是否有人知道如何防止
标题(“位置:…”)
从被发送到AJAX returndata,或者对下面的方法有任何其他解决方案

提前感谢,, 里奇

我的AJAX:

$("#topic_form").submit(function(event){
    var formData = new FormData($(this)[0]);
    $.ajax({
    url: 'create_topic_parse.php',
    type: 'POST',
    data: formData,
    async: false,
    cache: false,
    contentType: false,
    processData: false,
        success: function (returndata) {
            if(returndata.indexOf("view_topic") != true){
                $('#message').css("color", "red").html(returndata);
                } else {
                window.location(returndata);
            }
        }
    });
    return false;
});

返回json,而不是返回html:

{"action": "display","html":"..."}

和变化:

    success: function (response) {
        if(response.action == "display"){
            $('#message').css("color", "red").html(response.html);
        } else if (response.action == "redirect") {
            window.location(response.location);
        }
    }

返回json,而不是返回html:

{"action": "display","html":"..."}

和变化:

    success: function (response) {
        if(response.action == "display"){
            $('#message').css("color", "red").html(response.html);
        } else if (response.action == "redirect") {
            window.location(response.location);
        }
    }

我想,如果我理解正确的话。您需要使用
create\u topic\u parse.php
,生成一个URL,然后将其重定向到该URL

当前,要重定向到的页面显示在现有页面的div中,而不是重定向

我认为在您的PHP文件中,如果您回显一个元刷新而不是
头()
,那么这应该会得到您想要的结果

echo "<meta http-equiv=\"refresh\" content=\"0;URL=view_topic.php?tid=".$tid."&page=".$page."\">";
echo”“;

这些一直是我身体的一部分。

如果我理解正确的话,我想。您需要使用
create\u topic\u parse.php
,生成一个URL,然后将其重定向到该URL

当前,要重定向到的页面显示在现有页面的div中,而不是重定向

我认为在您的PHP文件中,如果您回显一个元刷新而不是
头()
,那么这应该会得到您想要的结果

echo "<meta http-equiv=\"refresh\" content=\"0;URL=view_topic.php?tid=".$tid."&page=".$page."\">";
echo”“;

对我来说,这些都是正文的一部分。

如果你只是想更改页面,为什么要使用ajax?正文内容中不应该出现标题。AJAX响应中的位置头将使浏览器透明地跟随重定向,并返回重定向页面的内容(旧Opera除外,后者没有)。您可以在自定义标题中返回URL,如
X-Redirect
或其他内容。因为我必须在PHP中生成URL。如果您只是想更改页面,为什么要使用ajax?标题不应出现在正文内容中。AJAX响应中的位置头将使浏览器透明地跟随重定向,并返回重定向页面的内容(旧Opera除外,后者没有)。您可以在自定义标题中返回URL,比如
X-Redirect
或其他什么。因为我必须用PHP生成URL。我明白了。我来试一试,让你知道我进展如何。干杯,伙计,我明白了。我来试一试,让你知道我进展如何。干杯。