Javascript Ajax/Jquery重定向调用不起作用
因此,从我的php中,我回显{error:1}:Javascript Ajax/Jquery重定向调用不起作用,javascript,jquery,ajax,Javascript,Jquery,Ajax,因此,从我的php中,我回显{error:1}: $(document).ready(function(){ $('#form').submit(function(e){ register(); }); }); function register(){ $.ajax({ type:"POST", url:"submit.php", async : false, data: $('#form'
$(document).ready(function(){
$('#form').submit(function(e){
register();
});
});
function register(){
$.ajax({
type:"POST",
url:"submit.php",
async : false,
data: $('#form').serialize(),
dataType: "json",
success: function(msg){
if(parseInt(msg.error)==1){
window.location="index.html";
}
else if(parseInt(msg.error)==0){
$('#error_out').html(msg.error);
e.preventDefault();
}
}
});
}
但它不想重定向。相反,它返回“submit.php”,并回显1。好吧,不能只返回1,因为这不是JSON。如果您只是返回“1”并对其执行parseInt,请将数据类型设置为“html”
如果需要JSON,请在PHP中执行以下操作:
$return = array('code'=>1);
echo json_encode($return);
您的“成功”功能如下所示:
if(msg.code==1){
window.location="index.html";
}
else if(msg.code==0)
{
$('#error_out').html(msg.code);
e.preventDefault();
}
else
{
// handle any other return value.
}
好吧,我的错是没有正确地阅读问题。问题是您提交表单时没有正确地取消它。在事件处理程序中执行此操作:
$(document).ready(function(){
$('#form').submit(function(e){
e.preventDefault();
register();
});
});
在失败的情况下,您可以删除一个。这个函数没有任何作用,因为在异步函数返回时堆栈已经被清除了(如果它真的清除了的话)。好吧,你不能只返回1,因为那不是JSON。如果您只是返回“1”并对其执行parseInt,请将数据类型设置为“html”
如果需要JSON,请在PHP中执行以下操作:
$return = array('code'=>1);
echo json_encode($return);
您的“成功”功能如下所示:
if(msg.code==1){
window.location="index.html";
}
else if(msg.code==0)
{
$('#error_out').html(msg.code);
e.preventDefault();
}
else
{
// handle any other return value.
}
好吧,我的错是没有正确地阅读问题。问题是您提交表单时没有正确地取消它。在事件处理程序中执行此操作:
$(document).ready(function(){
$('#form').submit(function(e){
e.preventDefault();
register();
});
});
在失败的情况下,您可以删除一个。那一个没有做任何事情,因为在异步函数返回时堆栈已经被清除了(如果它真的清除了的话)。您必须防止表单提交自身
$(document).ready(function(){
$('#form').submit(function(e){
register();
e.preventDefault(); // Or return false;
});
});
您的表单提交,而ajax没有机会处理其回调。您必须阻止表单自行提交
$(document).ready(function(){
$('#form').submit(function(e){
register();
e.preventDefault(); // Or return false;
});
});
您的表单提交了,ajax没有机会进行回调。我知道,我知道,我返回的是json(在我的代码中)。只是想让它更容易阅读。json部分工作,jquery显示divs工作的错误,只是它没有重定向我。我实际上是在我的代码msg.txt中使用的,它代表URL。不要在没有测试的情况下简化测试用例,因为它也被破坏了。。。构建一个表现出相同行为的模型。:)无论如何,我的附加注释可能会有所帮助,否则我们需要实际查看更多代码。写1而不是完整的json是我的错。考虑到上面的代码,应该可以在IE中工作。最可能的候选对象是在任何地方都能工作的东西,但IE是$.ajax调用中的一个额外逗号(如果您有更多的代码,也可以是类似的东西)。我知道,我知道,我返回的是一个json(在我的代码中)。只是想让它更容易阅读。json部分工作,jquery显示divs工作的错误,只是它没有重定向我。我实际上是在我的代码msg.txt中使用的,它代表URL。不要在没有测试的情况下简化测试用例,因为它也被破坏了。。。构建一个表现出相同行为的模型。:)无论如何,我的附加注释可能会有所帮助,否则我们需要实际查看更多代码。写1而不是完整的json是我的错。考虑到上面的代码,应该可以在IE中工作。最有可能的候选对象是在任何地方都能工作的东西,但IE是$.ajax调用中的一个额外逗号(或者类似的东西,如果你有更多的代码)。那么我什么时候可以提交我的表单?你需要提交表单吗?从代码示例中,我给人的印象是,您正在使用表单作为ajax调用的包装器。如果没有出现错误,我希望提交并重定向,否则除了执行jquery操作外,什么都不做。您已经通过ajax提交了表单。你不需要再次提交数据。那么我什么时候可以提交表格?你需要提交表格吗?从代码示例中,我给人的印象是,您正在使用表单作为ajax调用的包装器。如果没有出现错误,我希望提交并重定向,否则除了执行jquery操作外,什么都不做。您已经通过ajax提交了表单。您不需要再次提交数据。