【问题标题】:How to display array sent back from Ajax Request. Using Yii2如何显示从 Ajax 请求返回的数组。使用 Yii2
【发布时间】:2015-03-31 08:27:08
【问题描述】:

我已经发送了一个 ajax 请求,然后它将查询数据库并发送回我想要的内容。但是,当它返回到我的页面时,我仍然坚持实际显示它。

$.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

当我在变量“data”中接收到数据时,如何在 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);
}

这不起作用?

【问题讨论】:

  • 你能显示你的查询吗?
  • 我已经为你编辑了我的问题,谢谢

标签: javascript arrays ajax yii2


【解决方案1】:

改变这一行

$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);
}

【讨论】:

  • 太棒了!现在,当我在 ajax 的成功部分中将它作为“数据”接收回来时,我将如何在 javascript 中显示它。
  • 在ajax响应中解析resultdata然后循环出去
  • 请您查看我的第二次编辑,这是我需要的最后一个答案,然后我一切顺利
  • 已更新。请检查并将代码添加到您的 ajax 成功中。
  • 当我这样做时,我得到一个错误“Uncaught SyntaxError: Unexpected token A”。这就是我在尝试解决它时遇到的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 2023-03-04
  • 1970-01-01
  • 2015-11-29
相关资源
最近更新 更多