Превышен максимальный размер стека вызовов при передаче формы

Я прочитал другие посты, но не смог понять, где именно моя проблема. Я думаю, что я не вызываю функцию более одного раза при отправке. Это контактная форма, которую я хочу отправить через ajax к действию контроллера, где данные будут проверены и, если все в порядке, будут сохранены в таблице базы данных. Можете ли вы дать мне направление, где моя ошибка? Спасибо!
Форма:

<form method="post" action="" onsubmit="contactProccess()">
<div class="panel panel-default">
<input id="form-token" type="hidden" name="<?=Yii::$app->request->csrfParam?>"value="<?=Yii::$app->request->csrfToken?>" />

<div class="col-sm-12 contact-container">

<div class="panel-heading">
<h1 class="text-center contact-page-title <?=($message != "" ? " mt0 " : "")?>"><?= $page->title; ?></h1>
</div>

<div class="panel-body">
<div class="contact-form lg-margin h60">
<div class="text-input">
<input type="text" name="names" id="fancy-text" />
<label><?= Yii::t('app', 'app.Names') ?></label>
<div class="help-block"></div>
</div>
</div><!-- End .form-group -->

<div class="contact-form lg-margin h60">
<div class="text-input">
<input type="text" name="email" id="fancy-text"/>
<label>Email</label>
<div class="help-block"></div>
</div>
</div><!-- End .form-group -->

<div class="contact-form lg-margin h60">
<div class="text-input">
<input type="text" name="phone" id="fancy-text"/>
<label><?= Yii::t('app', 'app.Phone') ?></label>
<div class="help-block"></div>
</div>
</div><!-- End .form-group -->

<div class="contact-form lg-margin h60">
<div class="text-input">
<input type="text" name="title" id="fancy-text"/>
<label><?= Yii::t('app', 'app.Title') ?></label>
<div class="help-block"></div>
</div>
</div><!-- End .form-group -->

<div class="contact-form lg-margin h190">
<div class="text-input">
<textarea class="padding-message" name="message" id="fancy-text"></textarea>
<label><?= Yii::t('app', 'app.Message') ?></label>
<div class="help-block"></div>
</div>
</div><!-- End .form-group -->

<div class="contact-form lg-margin h100">
<?= '<img src="' . $_SESSION['captcha']['image_src'] . '" alt="CAPTCHA code" height="60" width="120">' ?>
<label><?= Yii::t('app', 'app.Security code') ?></label>
<input class="padding-message" name="captcha" id="fancy-text" />
<div class="help-block"></div>
</div><!-- End .form-group -->

<div class="xss-margin"></div><!-- space -->

<div class="contact-form submit-button">
<button type="submit"><?= Yii::t('app','app.Send') ?></button>
</div>
</div>
</div>
</div><!-- panel-end -->
</form>

Ajax:

function contactProccess() {
var name = $('input[name="names"]');
var email = $('input[name="email"]');
var phone = $('input[name="phone"]');
var title = $('input[name="title"]');
var captcha = $('input[name="captcha"]');
var message = $('textarea[name="message"]');
$.ajax({
method: 'post',
url: '/admin/site/contactprocess',
data: {
name: name,
email: email,
phone: phone,
title: title,
message: message
},
success: function ( data ) {
return false;
}
});
return false;
}

Действие — это просто тестовая форма:

public function actionContactprocess(){
var_dump($_POST);die;
}

0

Решение

Вы должны применить событие click к кнопке отправки, чтобы создать ajax, а не использовать obsubmit. Присвойте идентификатор кнопке и добавьте к ней событие нажатия

<form>
<div class="panel panel-default">
<input id="form-token" type="hidden" name="<?=Yii::$app->request->csrfParam?>"value="<?=Yii::$app->request->csrfToken?>" />

<div class="col-sm-12 contact-container">

<div class="panel-heading">
<h1 class="text-center contact-page-title <?=($message != "" ? " mt0 " : "")?>"><?= $page->title; ?></h1>
</div>

<div class="panel-body">
<div class="contact-form lg-margin h60">
<div class="text-input">
<input type="text" name="names" id="fancy-text" />
<label><?= Yii::t('app', 'app.Names') ?></label>
<div class="help-block"></div>
</div>
</div><!-- End .form-group -->

<div class="contact-form lg-margin h60">
<div class="text-input">
<input type="text" name="email" id="fancy-text"/>
<label>Email</label>
<div class="help-block"></div>
</div>
</div><!-- End .form-group -->

<div class="contact-form lg-margin h60">
<div class="text-input">
<input type="text" name="phone" id="fancy-text"/>
<label><?= Yii::t('app', 'app.Phone') ?></label>
<div class="help-block"></div>
</div>
</div><!-- End .form-group -->

<div class="contact-form lg-margin h60">
<div class="text-input">
<input type="text" name="title" id="fancy-text"/>
<label><?= Yii::t('app', 'app.Title') ?></label>
<div class="help-block"></div>
</div>
</div><!-- End .form-group -->

<div class="contact-form lg-margin h190">
<div class="text-input">
<textarea class="padding-message" name="message" id="fancy-text"></textarea>
<label><?= Yii::t('app', 'app.Message') ?></label>
<div class="help-block"></div>
</div>
</div><!-- End .form-group -->

<div class="contact-form lg-margin h100">
<?= '<img src="' . $_SESSION['captcha']['image_src'] . '" alt="CAPTCHA code" height="60" width="120">' ?>
<label><?= Yii::t('app', 'app.Security code') ?></label>
<input class="padding-message" name="captcha" id="fancy-text" />
<div class="help-block"></div>
</div><!-- End .form-group -->

<div class="xss-margin"></div><!-- space -->

<div class="contact-form submit-button">
<button id="submit-btn"><?= Yii::t('app','app.Send') ?></button>
</div>
</div>
</div>
</div><!-- panel-end -->
</form>

Вот метод js для того же:

$('#submit-btn').click(function(){
var name = $('input[name="names"]');
var email = $('input[name="email"]');
var phone = $('input[name="phone"]');
var title = $('input[name="title"]');
var captcha = $('input[name="captcha"]');
var message = $('textarea[name="message"]');
$.ajax({
method: 'post',
url: '/admin/site/contactprocess',
data: {
name: name,
email: email,
phone: phone,
title: title,
message: message
},
success: function ( data ) {
return false;
}
});
return false;
});
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector