gpt4 book ai didi

javascript - Yii2 上的 Ajax 全日历

转载 作者:行者123 更新时间:2023-11-28 05:24:02 25 4
gpt4 key购买 nike

我正在使用 Yii2 的 Fullcalendar ( https://github.com/philippfrenzel/yii2fullcalendar-demo ),并且我想在单击日期时使用 Ajax 保存事件。数据来自下拉列表。

我的代码似乎在 Controller 中找不到该函数,也许是 Url 的问题?

我对 JS 的看法以及 Controller 上我的 funstion Ajax 的链接:

<?php 
$form = ActiveForm::begin();
?>

<div class="row">
<div class="col-md-4">
<?= $form->field($feuille_de_jour_responsable, 'ID_Categorie')->dropDownList(CategorieFdj::find()->select(['Nom', 'ID_Categorie'])->indexBy('ID_Categorie')->column(), ['id'=>'catId']); ?>
</div>
<div class="col-md-4">
<?= $form->field($feuille_de_jour_responsable, 'ID_Poste_FDJ')->dropDownList(PosteFdj::find()->select(['Nom_Poste_FDJ', 'ID_Poste_FDJ'])->indexBy('ID_Poste_FDJ')->column(), ['id'=>'postId']); ?>
</div>
<div class="col-md-4">
<?= $form->field($feuille_de_jour_responsable, 'Code_Personnel')->dropDownList(Personnel::find()->select(['Nom_Personnel', 'Code_Personnel'])->indexBy('Code_Personnel')->column(), ['id'=>'codePers']); ?>
</div>
</div>


<?php ActiveForm::end();?>



<?php
$JSCode = <<<EOF

function(start,end) {
//alert ($("select[id=catid] option:selected").text());
var title = $("select[id=codePers] option:selected");
var codePersonnel = $("select[id=codePers] option:selected").val();
var posteId = $("select[id=postId] option:selected").val();
var categorieID = $("select[id=catId] option:selected").val();
//alert($('#catid').val());
var eventData;
var obj = {
Date_Calendaire : start.format(),
ID_Poste_FDJ : posteId,
ID_Categorie : categorieId,
Code_Personnel : codePersonnel
};
$.ajax({
url : 'index.php?r=feuille-de-jour-responsable/create',
dataType: 'json',
data: obj,
success: function (data, response, event, date) {
alert("success here");
/*$('#calendar').fullCalendar('renderEvent',
{
title: title,
start: start.format()
//end: thedate1
}, true);
eventData = {
title: title,
start: start.format(),
end: start.format(),
};
$('#calendar').fullCalendar('renderEvent', eventData, true);*/
},
error: function () {
alert("Oops! Something didn't work");
}
});
}

EOF;

$JSEventClick = <<<EOF
function(calEvent, jsEvent, view) {
alert('Event: ' + calEvent.title);
alert('Coordinates: ' + jsEvent.pageX + ',' + jsEvent.pageY);
alert('View: ' + view.name);
// change the border color just for fun
//$(this).css('border-color', 'red');
}
EOF;


?>

<?= yii2fullcalendar\yii2fullcalendar::widget([
'id' => 'calendar',
'clientOptions' => [
'height' => 650,
// 'language' => 'fa',
//'eventLimit' => TRUE,
'selectable' => true,
'selectHelper' => true,
'droppable' => true,
'editable' => true,
// 'theme'=>true,
'fixedWeekCount' => false,
'defaultDate' => date('Y-m-d'),
'eventClick' => new JsExpression($JSEventClick),
'select'=>new JsExpression($JSCode)
],

]);
?>

<?= Html::encode($JSCode); ?>

<?= Html::encode($JSEventClick); ?>

以及我的 Controller 上的功能 (FeuilleDeJourResponsableController)

        public function actionCreate()
{

$feuille_de_jour_responsable = new FeuilleDeJourResponsable();

if ($feuille_de_jour_responsable->load(Yii::$app->request->post()) && $feuille_de_jour_responsable->save()) {
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
//return $this->redirect(['view', 'Date_Calendaire' => $feuille_de_jour_responsable->Date_Calendaire, 'ID_Poste_FDJ' => $feuille_de_jour_responsable->ID_Poste_FDJ, 'ID_Categorie' => $feuille_de_jour_responsable->ID_Categorie, 'Code_Personnel' => $feuille_de_jour_responsable->Code_Personnel]);
return ['success' => $feuille_de_jour_responsable->save()];
} else {
return $this->render('create', [
'feuille_de_jour_responsable' => $feuille_de_jour_responsable,
]);
}
}

我开始使用 firebug,当我单击时,它没有保存...没有错误。我在想,考虑到与“POST”的链接(与表单中的“正常”链接相同),我的函数“创建”将保存数据,但什么也没发生。 “如果”不起作用,我不知道为什么。

firebug

我发现了异常:“SyntaxError:意外标记<在JSON中的位置0”

谢谢你的帮助=)莎拉

最佳答案

失败的返回值save对于您的情况,操作不太有效。

if ($feuille_de_jour_responsable->load(Yii::$app->request->post()) && $feuille_de_jour_responsable->save()) {
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return ['success' => $feuille_de_jour_responsable->save()];
} else {
return $this->render('create', [
'feuille_de_jour_responsable' => $feuille_de_jour_responsable,
]);
}

您需要以 JSON 格式返回您的保存结果,而不是页面的 HTML 代码。由于您尝试显示整个 HTML 内容,因此您会得到 SyntaxError: unexpected token < in JSON in position 0 .

成功操作:

return ['success' => true];

顺便说一下,你不能使用 $feuille_de_jour_responsable->save()再次返回响应,因为它将尝试保存两次。

对于失败的操作:

return ['success' => false];

您不能使用render因为这是一个完整的页面,并且您正在使用 Ajax 请求。

关于javascript - Yii2 上的 Ajax 全日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40302621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com