2015-03-31 87 views
0

我發送了一個ajax請求,然後它會查詢數據庫併發回我想要的。然而,當我將它返回到我的頁面時,我實際上顯示了這一點。如何顯示從Ajax請求發回的數組。使用Yii2

$.ajax({ 
    url: '<?php echo \Yii::$app->getUrlManager()->createUrl('cases/ajax') ?>', 
    type: 'POST', 
    data: { firstcategory: firstcategory }, 
    success: function(data) { 
     for (var key in data) { 
      var value = data[key]; 
      alert(value); 
      document.write(value); 
     } 
    } 
}); 

正如你所看到的,我試圖顯示這個值,但它返回一個數組。

這是被送回從Ajax請求:

Array 
(
[0] => app\models\Subcategory Object 
    (
     [_attributes:yii\db\BaseActiveRecord:private] => Array 
      (
       [subcategory_id] => 1 
       [name] => ADJUDICATION ON BEHALF OF OR AGAINST AN INSOLVENT PARTY 
       [parent_id] => 2 
      ) 

     [_oldAttributes:yii\db\BaseActiveRecord:private] => Array 
      (
       [subcategory_id] => 1 
       [name] => ADJUDICATION ON BEHALF OF OR AGAINST AN INSOLVENT PARTY 
       [parent_id] => 2 
      ) 

     [_related:yii\db\BaseActiveRecord:private] => Array 
      (
      ) 

     [_errors:yii\base\Model:private] => 
     [_validators:yii\base\Model:private] => 
     [_scenario:yii\base\Model:private] => default 
     [_events:yii\base\Component:private] => Array 
      (
      ) 

     [_behaviors:yii\base\Component:private] => Array 
      (
      ) 

    ) 

[1] => app\models\Subcategory Object 
    (
     [_attributes:yii\db\BaseActiveRecord:private] => Array 
      (
       [subcategory_id] => 2 
       [name] => THE EXISTENCE OF A CONTRACT 
       [parent_id] => 3 
      ) 

     [_oldAttributes:yii\db\BaseActiveRecord:private] => Array 
      (
       [subcategory_id] => 2 
       [name] => THE EXISTENCE OF A CONTRACT 
       [parent_id] => 3 
      ) 

     [_related:yii\db\BaseActiveRecord:private] => Array 
      (
      ) 

     [_errors:yii\base\Model:private] => 
     [_validators:yii\base\Model:private] => 
     [_scenario:yii\base\Model:private] => default 
     [_events:yii\base\Component:private] => Array 
      (
      ) 

     [_behaviors:yii\base\Component:private] => Array 
      (
      ) 

    ) 

[2] => app\models\Subcategory Object 
    (
     [_attributes:yii\db\BaseActiveRecord:private] => Array 
      (
       [subcategory_id] => 3 
       [name] => THE MEANING OF CONSTRUCTION CONTRACT 
       [parent_id] => 3 
      ) 

     [_oldAttributes:yii\db\BaseActiveRecord:private] => Array 
      (
       [subcategory_id] => 3 
       [name] => THE MEANING OF CONSTRUCTION CONTRACT 
       [parent_id] => 3 
      ) 

     [_related:yii\db\BaseActiveRecord:private] => Array 
      (
      ) 

     [_errors:yii\base\Model:private] => 
     [_validators:yii\base\Model:private] => 
     [_scenario:yii\base\Model:private] => default 
     [_events:yii\base\Component:private] => Array 
      (
      ) 

     [_behaviors:yii\base\Component:private] => Array 
      (
      ) 

    ) 
) 

好吧,現在我想在短短的這部分顯示的數據:

[subcategory_id] => 1 
[name] => ADJUDICATION ON BEHALF OF OR AGAINST AN INSOLVENT PARTY 
[parent_id] => 2 

我如何在JavaScript實現這一目標當我收到數據返回變量「數據」?

感謝任何幫助,您可以給我


編輯

這是我的控制器:

public function actionAjax() { 
    if(isset($_POST['firstcategory'])) { 
     $firstcategory = $_POST['firstcategory']; 
     $subcategory = Subcategory::find()->all(); 
    } else { 
     $firstcategory = "Ajax failed"; 
    } 

    print_r($subcategory); 
    exit; 

    return \yii\helpers\Json::encode($subcategory); 
} 

第二個編輯

我收到此JSON

[ 
    { 
     "subcategory_id": "1", 
     "name": "ADJUDICATION ON BEHALF OF OR AGAINST AN INSOLVENT PARTY", 
     "parent_id": "2" 
    }, 
    { 
     "subcategory_id": "2", 
     "name": "THE EXISTENCE OF A CONTRACT", 
     "parent_id": "3" 
    }, 
    { 
     "subcategory_id": "3", 
     "name": "THE MEANING OF CONSTRUCTION CONTRACT", 
     "parent_id": "3" 
    }, 
    { 
     "subcategory_id": "4", 
     "name": "THE MEANING OF CONSTRUCTION OPERATIONS", 
     "parent_id": "3" 
    }, 
    { 
     "subcategory_id": "5", 
     "name": "EXCLUDED CONSTRUCTION OPERATIONS", 
     "parent_id": "3" 
    }, 
    { 
     "subcategory_id": "6", 
     "name": "EXCLUDED AGREEMENTS", 
     "parent_id": "3" 
    } 
] 

現在,在我看來,我試圖解析它,但我不能確定

success: function(data) { 
    obj = JSON.parse(data); 
    document.write(obj.subcategory_id); 
} 

這不是工作?

+0

你能顯示你的查詢嗎? – Chinmay 2015-03-31 08:28:43

+0

我已編輯我的問題給你,謝謝 – 2015-03-31 08:30:58

回答

2

改變這一行

$subcategory = Subcategory::find()->all(); 

$subcategory = Subcategory::find()->asArray()->all(); 

這將給數組形式的結果集,然後你可以把它作爲JSON。

然後在您的ajax成功中,解析Json結果。

var result = $.parseJSON(data); 

for(var i=0; i<result.length; i++){ 
    alert(result[i].subcategory_id); 
} 
+0

太棒了!現在我怎麼會顯示這個JavaScript的時候,我收到它作爲「數據」在我的ajax的成功部分回來。 – 2015-03-31 08:33:39

+0

在ajax響應解析結果數據,然後循環出 – Chinmay 2015-03-31 08:37:23

+0

請你可以查看我的第二次編輯,這是我需要的最後一個答案,然後我很好去 – 2015-03-31 08:43:03