jquery中的location.href没有触发ajax成功

时间:2014-02-18 06:10:59

标签: jquery ajax

我正在使用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错误。

3 个答案:

答案 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";
        }
    });