如果数据返回null,则停止$ .ajax

时间:2011-10-16 07:45:37

标签: jquery json

正如您所看到的,我正在从我的ajax调用中检索JSON数据,但如果数据库找不到任何内容,则会返回null的打印值。

  

e.g。 print "null";

正如您在案例1中看到的那样,我已经问过它是否找不到obj.id然后显示这个。

然而,由于没有返回JSON,它应该是if(data == "null")但是当我这样做时它似乎也可以工作。

我基本上需要注意它找不到它,并停止脚本。

这是我的jquery代码。

    function fetch(e,formstring)
{

    $.ajax({
      type: 'POST',
      url: 'system/classes/core.php',
      data: formstring,
      dataType: 'json',
      contentType: "application/x-www-form-urlencoded;charset=utf-8",
      success: function(data){
          $.each(data, function(i, obj) {

               switch (e) { 
                 case 1:
                 if(!obj.id)
                 {
                    shownotify(1,"Sorry An error was found. Check Username / Password.");
                    alert("error");
                    shownotify(2,"");
                    return false;
                 }

                  $.each(obj, function(key, val) {
                     alert(key+" - "+val);
                  });


                 break;
                 case 2:
                 $.each(obj, function(key, val) {
                    if(val != 0)
                    {
                        $("#betataken").html("<span style='color:red'><b>"+betacode+"</b> - NOT VALID");
                    }
                    else
                    {
                        $("#betataken").html('<img src="theme/sysimages/tick.png"/><span style=" color: white;"><b>'+betacode+'</b> is valid</span');
                    }
                 });
                 break;
                 case 3:
                 $.each(obj, function(key, val) {
                     if(val != 0)
                     {
                        $("#usernametaken").html("<span style='color:red'><b>"+username+"</b> - is taken");  
                     }
                     else
                     {
                        $("#usernametaken").html('<img src="theme/sysimages/tick.png"/><span style=" color: white;"><b>'+username+'</b> is valid</span');
                     }
                     unamecheck = val;
                  });
                 break; 
                 case 4:
                 //LoginSript

                    $('#rightheader').html(obj.code);
                 break;
                 case 5:
                 //WelcomePage/Signup
                    $('#window').html(obj.code);
                 break;
               }
         });
      },
      error: function(data){
      $.each(data,function(i,myinfo){
            alert(i);       
          });
      },
      complete: function(){
        shownotify(2,"");  
      }
    });
    return false;
}

2 个答案:

答案 0 :(得分:0)

您可以执行obj.id === undefined这意味着obj.id不存在。

如果你要回json。

您可以添加到$.ajax "text json": jQuery.parseJSON的末尾,它会强制解析为json模式。这意味着如果解析失败,将触发错误。

编辑:回复您的问题:

$。AJAX({       类型:'POST',       url:'system / classes / core.php',       data:formstring,       dataType:'json',       contentType:“application / x-www-form-urlencoded; charset = utf-8”,       成功:函数(数据){           $ .each(data,function(i,obj){

           switch (e) { 
             case 1:
             if(!obj.id)
             {
                shownotify(1,"Sorry An error was found. Check Username / Password.");
                alert("error");
                shownotify(2,"");
                return false;
             }

              $.each(obj, function(key, val) {
                 alert(key+" - "+val);
              });


             break;
             case 2:
             $.each(obj, function(key, val) {
                if(val != 0)
                {
                    $("#betataken").html("<span style='color:red'><b>"+betacode+"</b> - NOT VALID");
                }
                else
                {
                    $("#betataken").html('<img src="theme/sysimages/tick.png"/><span style=" color: white;"><b>'+betacode+'</b> is valid</span');
                }
             });
             break;
             case 3:
             $.each(obj, function(key, val) {
                 if(val != 0)
                 {
                    $("#usernametaken").html("<span style='color:red'><b>"+username+"</b> - is taken");  
                 }
                 else
                 {
                    $("#usernametaken").html('<img src="theme/sysimages/tick.png"/><span style=" color: white;"><b>'+username+'</b> is valid</span');
                 }
                 unamecheck = val;
              });
             break; 
             case 4:
             //LoginSript

                $('#rightheader').html(obj.code);
             break;
             case 5:
             //WelcomePage/Signup
                $('#window').html(obj.code);
             break;
           }
     });
  },
  error: function(data){
  $.each(data,function(i,myinfo){
        alert(i);       
      });
  },
  complete: function(){
    shownotify(2,"");  
  },
  "text json": jQuery.parseJSON
});

答案 1 :(得分:0)

你可以在php文件中以json($return['result'] = 'null';)的形式返回null。 在你的js:

[...]
dataType: 'json',
      contentType: "application/x-www-form-urlencoded;charset=utf-8",
      success: function(data){
      result = jQuery.parseJSON(data);
      if (result['result'] != 'null') {
          $.each(data, function(i, obj) {
              [...]