我正在使用jquery的$ .ajax将json数据作为发布请求发送到我的内部服务器。我能够得到响应,但是在成功函数上,虽然console.log工作但不是直接的行location.href ='/ users';即使我在成功中单独使用location.href,也不会被触发。以下是我的代码示例
<script type='text/javascript'>
function submitData() {
var payload = {
'fullname': $('#fullname').val(),
'username': $('#username').val(),
'email': $('#email').val(),
'password': $('#password').val(),
};
var onSuccess = function (data, textStatus, jqXHR) {
console.log(jqXHR.status);
location.href= "/thankyou.html";
};
$.ajax({
type: 'POST',
async: false,
url: '/users',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify(payload),
success: onSuccess,
});
}
</script>
我也尝试过window.location,window.location.href,window.location.assign(),似乎没有在上面的代码中工作。但奇怪的是,当我为ajax定义一个完整的回调并提醒一些东西时,成功的location.href很少(但不是每次)。我也查看了类似的问题并尝试了这些答案,但似乎没有解决这个问题。如果async = true,我的烧瓶服务器上会出现Broken Pipe错误。
答案 0 :(得分:1)
尝试这样称呼:
$.ajax({
type: 'POST',
async: false,
url: '/users',
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify(payload),
success: function(data, textStatus, jqXHR){
console.log(jqXHR.status);
window.location.href= "/thankyou.html";
}
});
此外,您的ajax调用代码在,
事件中遇到success:
,这是一个错误。
答案 1 :(得分:0)
删除onSuccess函数并将重定向放入成功本身。或者使用firebug控制台检查你是否有任何错误,这样你的成功就不会被触发。
答案 2 :(得分:0)
试试这个:
$.ajax({
type: 'POST',
url: '/users',
data: JSON.stringify(payload),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
cache: false,
timeout: 100000,
success: function (response) {
location.href= "/thankyou.html";
}
});