如何显示从 Ajax 请求发回的数组。使用 Yii2
How to display array sent back from Ajax Request. Using Yii2
我已经发送了一个 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);
}
这不起作用?
更改此行
$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 请求,然后它会查询数据库并发回我想要的。但是,当它返回到我的页面时,我仍然坚持实际显示它。
$.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);
}
这不起作用?
更改此行
$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);
}