Javascript 是否可以阻止将标题(“location:url”)发送到AJAX?
我在页面上有一个html表单。表单数据通过AJAX发送到PHP脚本。在这个PHP脚本中,使用各种if语句有条件地检查输入中的每个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.”
$\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。我明白了。我来试一试,让你知道我进展如何。干杯,伙计,我明白了。我来试一试,让你知道我进展如何。干杯。