成功ajax:如果是200状态代码运行功能别的另一个功能

时间:2016-04-29 12:29:53

标签: javascript jquery ajax

我不知道为什么不起作用...我使用$.ajax来运行file.php并传递它(POST)一个输入值 这个file.php有效但我的函数ajax不起作用:

        $.ajax({
            type: 'POST',
            url: 'file.php',
            data: { email: $('#andressemail').val() },
            success: function(data,status){
                if(status === '200'){
                    newmessage();
                }
                else{
                    erroremessage();
                }
            }
        });

       funtion newmessage(){
        alert('ok');
       }

       funtion erroremessage(){
        alert('no');
       }     

file.php运行正常(它在我的简报中添加了一个用户),但$.ajax不起作用且状态代码不是200

为什么?

3 个答案:

答案 0 :(得分:3)

尝试按以获取状态代码,使用xhr.status作为状态代码:

    $.ajax({
        type: 'POST',
        url: 'file.php',
        data: { email: $('#andressemail').val() },
        success: function(xml, textStatus, xhr) {
            alert(xhr.status);
            if(xhr.status === '200'){
                newmessage();
            }
            else{
                erroremessage();
            }
        }
    });

   funtion newmessage(){
    alert('ok');
   }

   funtion erroremessage(){
    alert('no');
   }     

答案 1 :(得分:1)

成功功能仅在HTTP响应已经200时运行。您还需要使用错误函数,当HTTP响应未正确完成时,它将触发。将代码更改为:

function newmessage(data, textStatus, jqXHR){
  alert('ok');
}

function erroremessage(data, textStatus, jqXHR){
  alert('no');
}

$.ajax({
  type: 'POST',
  url: 'file.php',
  data: { email: $('#andressemail').val() },
  success: newmessage,
  error: erroremessage
});

答案 2 :(得分:0)

处理$.ajax的最佳方式是:

var _ajax = function(url, data, type){
    return $.ajax({
        type: type,
        url: url,
        data: data,
    });
}

var data = { email: $('#andressemail').val() };

_ajax('file.php', data, 'POST')
    .success(function(res, statusTitle, xhr){
        // res: response from server
        // statusTitle = 'success', ...
        // xhr: XHR object, for your case, xhr.status will be 200
    });

你也可以使用.error(function(){...}),(.done);