我正在使用ajax请求将数据传递到yii2,但我不断收到500错误
这是ajax请求代码:
<?php
$script = <<< JS
$('form#forward_pr').on('beforeSubmit', function(e){
var keys = $('#grid').yiiGridView('getSelectedRows');
$.post({
url: "forwardpr", // your controller action
dataType: 'json',
data: {keylist: keys},
success: function(data) {
alert('I did it! Processed checked rows.')
},
error: function(err){
console.log("server error");
}
});
return false;
} ) ;
JS;
$this->registerJS($script);
?>
当我做console.log(keys)这返回
[0, 1]
这是我的控制器代码:
if (Yii::$app->request->post()) {
echo $post = json_encode($_POST['keys']);
if (isset($_POST['keylist'])) {
$keys = \yii\helpers\Json::decode($_POST['keylist']);
print_r($keys);
}else{
echo "1";
}
上面的代码总是执行发布请求的错误部分,这可能是什么错误;
您将以已编码(发布)数据主体(而不是键值对)的形式发送JSON。因此,您的方法无法以这种方式工作。
有两个选项可解决此问题:
从长远来看,第一个选项是首选,但第二个选项作为快速修复很简单。
首先,请确保配置您的应用程序以解析JSON正文内容。INconfig.php
将其添加到components
数组中:
'request' => [
'parsers' => [
'application/json' => 'yii\web\JsonParser',
]
]
然后在您的控制器中使用它来获取JSON参数:
$model->load(Yii::$app->getRequest()->getBodyParams());
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句