2014-03-30 57 views
3

我有一个jQuery Ajax的小问题。 我想发送POST到.php文件,然后更改当前的URL。我尝试下面的代码:jquery ajax后不执行

<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script> 
<script> 
window.onload = function() { 
    $.ajax({ 
     type: "POST", 
     url: "sample.php", 
     data: {'username': "STRING"}, 
     timeout: 1000, 
     complete: function(){ 
      window.location.href = 'http://127.0.0.1/sample/another.php'; 
     } 
    }); 
} 
</script> 

所以,我可以在Chrome开发者工具的网络标签,不执行POST看到。虽然URL更改为另一个.php

你能告诉我我做错了什么或我该如何解决这个问题?

+4

尝试更改成功完成... – pj013

+1

开发人员工具控制台中是否有任何错误? –

回答

0

你永远不会看到POST。导致网址更改,并记住another.php没有提出任何AJAX请求!所以你永远找不到任何东西。尝试将成功方法中的JS代码更改为警报,以了解它是否可行!也许你会在控制台中找到POST方法!

+0

如果问题仍然存在,请尝试使用Mozilla Firebug和活Http标题进一步调试问题。 –

+0

那么,你是对的......邮政发送和执行得很好,但我没有看到它。在用alert()替换完整部分后,我看到帖子......谢谢! –

+0

没问题!乐意效劳。 – Ritikesh

2

使用成功,而不是完整的

$.ajax({ 
     type: "POST", 
     url: "sample.php", 
     data: {'username': "STRING"}, 
     timeout: 1000, 
     success : function(){ 
      window.location.href = 'http://127.0.0.1/sample/another.php'; 
     } 
    }); 
+0

我想他提到了网址的变化。这意味着AJAX部分起作用。他对开发人员工具没有显示POST请求感到困惑。这很明显。由于URL改变了,他现在在另一个没有提出任何请求的页面上。因此空的网络选项卡。 – Ritikesh

0

或者,您也可以使用.done()。你也可以考虑在自执行函数里面而不是window.onload事件。

(function($){ 

    // Make an object for your param values. 
    var ajaxData = { 
     username: 'STRING', 
     anotherParam: 'STRING', 
     andanotherParam: 'STRING', 
     yetanotherParam: 'STRING' 
    }; 

    $.ajax({ 
     type: "POST", 
     url: "sample.php", 
     data: ajaxData 
    }).done(function(){ 
     window.location.href = 'http://127.0.0.1/sample/another.php'; 
    }).fail(function(jqXHR, textStatus) { 
     alert("Request failed: " + textStatus); 
    }); 

}(jQuery));