我正在使用js-switchery来自定义我的复选框。 onchage
复选框向控制器执行ajax请求,这就是我如何使产品(让我们说)活跃或无效。但是现在我的复选框每次更改时都会发送两个请求,结果我无法更改产品的状态(活动或非活动)。
AJAX:
function changeStatusActive(id, controllerName) {
$.ajax({
url: location.protocol + '//' + window.location.hostname + '/admin/' + controllerName + '/changestatusactive',
method: "POST",
data: {
id: id,
}
});
}
控制器操作:
public function actionChangestatusactive() {
if (isset($_POST['id']) and ! empty($_POST['id'])) {
$model = Product::findOne((int) $_POST['id']);
if ($model) {
if ($model->active == 1) {
$model->active = 2;
} else {
$model->active = 1;
}
$model->update();
}
}
}
我的模特功能:
public function changeActiveForm() {
$active = "";
if ($this->active == 1) {
$active = 'checked="checked"';
}
return '<label class="switchery switchery-default taCenter">
<input type="checkbox" class="js-switch" data-color="#99d683" data-secondary-color="#f96262" value="1" id="check_' . $this->id . '" name="field_types" ' . $active . ' onchange="changeStatusActive(' . $this->id . ', \'products/product\');"></input>
<label data-off="' . Yii::t('app', 'Не') . '" data-on="' . Yii::t('app', 'Да') . '" for="check_' . $this->id . '"></label>
<span></span>
</label>';
}