2017-10-24 8 views
0

私は、クエリからの結果がある場合は基本的にチェックするスクリプトがあります:私のIF警告Data retrieved私は空のJSON配列を取得するのはなぜなぜ私のスクリプトは空の配列の結果を無視しますか?

$.post('<?php echo site_url('xxx/yyy'); ?>',{data:no},function(result){ 
     if(!result){ 
      alert("No Data"); 
     } 
     else{ 
      alert("Data retrieved"); 
     } 
}); 

を。私はalert(result)を別のデータ(結果が空で結果が真であるデータ)で処理しようとしましたが、両方のデータがData retrievedに警告しています。

$this->db->select('*',FALSE); 
    $this->db->from('t_penomoran tp');  
    $this->db->join('t_penomoran_detail t_pd', 'tp.nomor = t_pd.nomor'); 

    $this->db->where('tp.nomor',$nomor); 

    $query = $this->db->get(); 
    return $query->result_array(); 

注:

これは私のモデルである私が値を持たないデータでalert(result.length)を行う何らかの理由で
、結果は2です。しかし、私は値を持たないデータでalert(result)を行うときに結果が[]

+0

空のJSON配列[]は文字列形式ですので、まだ実際のJSONに結果を解析する必要がありますか? –

+0

@ DanielH.J。 JSON(JavaScript Object Notation)(http://json.org)は、完全に言語に依存しないが、C言語のプログラマーには慣れ親しんでいるC、 C + +、C#、Java、JavaScript、Perl、Pythonなど多くのものが含まれています。 " - [JSONとObject Literal Notationの違いは何ですか?](https://stackoverflow.com/questions/2904131/what-is-the -Differenceとjson-object-literal-notationとの間の差分) – Andreas

+1

Andreas、Ajaxの結果は文字列化された空のJSON配列なので、[]は[]と同じではありません。 '[]'は長さが2の文字列です。最初に結果を解析する必要があります。 –

答えて

1

空の配列は、あなたのif文で意味truthy値、でさ、それはtrueと評価されますし、あなたがalert()を参照してください理由です。それを修正するには、lengthプロパティを使用します。

if(!result.length) alert('no data') 
+0

まだ運がありません。なんらかの理由で、値がないデータで 'alert(result.length)'を実行すると結果は2になります。しかし、値がないデータで 'alert(result)'を実行すると、結果は '[]' – ashura91

+0

これは結果が長さ2の文字列、すなわち '' [] '' – James

0

あなたは

このような
if(jQuery.isEmptyObject(result)) 
{ 
     alert('no data') 
} 
0

を確認することができますまず第一には、空の場合は何を得る警告次に、この

var res = result.responseJSON; 

のようなあなたの結果を解析nullになります。あなたはそれをフィルタリングすることができます

関連する問題