在我的Yii2应用程序中,我尝试将bootstrap multiselect下拉值发送到我的控制器,并根据arra在控制器中发送执行操作。它总是遇到错误,我已经警告了thrownError。我得到的错误是 语法错误:意外的令牌<在Json的第4位
我无法理解我哪里出错了。
我的下拉列表代码
<select id="lstFruit" multiple="multiple" style="width:300px;">
<optgroup label ="General">
<?php for ($i = 0; $i<$genCount; $i++){?>
<option value="<?php echo $genRole[$i] ?>">
<?php echo $genRole[$i] ?>
</option>
<?php } ?>
</optgroup>
<optgroup label ="Chemicals">
<?php for ($i = 0; $i<$chemCount; $i++){?>
<option value="<?php echo $chemRole[$i] ?>">
<?php echo $chemRole[$i] ?>
</option>
<?php } ?>
</optgroup>
<optgroup label ="Risk Assessment">
<?php for ($i = 0; $i<$riskCount; $i++){?>
<option value="<?php echo $riskRole[$i] ?>">
<?php echo $riskRole[$i] ?>
</option>
<?php } ?>
</optgroup>
</select>
我的ajax请求
jQuery("body").on("click", ".rolesEdit", function() {
var roles = $("#lstFruit").val();
alert(roles.length);
$.ajax({
type: "POST",
cache: false,
data:{roles: roles},
url: "'.$url.'",
dataType: "json",
success: function(data){
if(data.status){
alert(data);
}else{
alert(data);
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError);
if(thrownError == "Forbidden"){window.location = "http://test.qsims.com/index.php/product/check-file"; }
}
});
});
我的控制器
if(Yii::$app->request->post('roles')){
$p = Yii::$app->request->post();
$roles = $p["roles"];
$count = count($roles);
\app\modules\auth\models\SimAuthAssignment::deleteAll(['in','user_id', $id]);
for($i = 0; $i < $count; $i++){
$auth = Yii::$app->authManager;
$authorRole = $auth->getRole($roles[$i]);
$auth->assign($authorRole, $model->user_id);
}
echo BaseJson::encode([
'status'=>true,
'id'=>$model->user_id,
]);
}
我哪里错了?任何人都可以帮我这个吗?
答案 0 :(得分:0)
由于我的网址导致语法错误。我的网址包含回调?=
$url=Yii::$app->getUrlManager()->createUrl("user/update?id=".$id);
这是一个激活JSONP功能的魔术字符串。
我在控制器中创建了一个新操作,并将网址更改为新创建的操作,该操作为我解决了问题。
$url=Yii::$app->getUrlManager()->createUrl("user/roles-ajax");
回答来自enter link description here - @Abdul
的回复