Я новичок в Yii и буду признателен за любую помощь. оказывает вид с формой:Yii 2, Отправить форму, используя Ajax
public function actionCreate()
{
return $this->render('create');
}
вид:
<form id="myform" action="/test/web/index.php?r=form/preorder" method="post">
<input type="text" id="form-firstname" name="Form[firstName]" required maxlength="50">
<input type="text" id="form-lastname" name="Form[lastName]" required maxlength="50">
<input name="send" type="submit" value="Отправить">
</form>
Im используя простой HTML вместо расширений Yii в форме, потому что мне нужно иметь внешний интерфейс только с HTML/JavaScript. На бэкэнд я могу использовать Yii.
Теперь я пытаюсь представить форму с помощью Ajax:
$(document).ready(function(){
$("body").on('beforeSubmit', 'form#myform', function(e){
var form = $(this);
$.ajax({
url : form.attr('action'),
type : 'POST',
data : form.serialize(),
success: function (response)
{
console.log(response);
},
error : function()
{
console.log('internal server error');
}
});
return false;
});
});
FormController:
public function actionPreorder(){
if (Yii::$app->request->isAjax) {
Yii::$app->response->format = Response::FORMAT_JSON;
$res = array(
'body' => $_POST,
'success' => true,
);
//also I need to save to db
return $res;
}
}
Проблема заключается в том, когда я отправить форму, он перенаправляет на новую страницу preorder
, и я не вижу моих опубликованных данных. Я не уверен, что я делаю неправильно.
Просьба указать, почему вы используете обычный HTML? Из-за использования AngularJs или чего-то подобного? В противном случае лучше использовать виджет «ActiveForm» с проверкой AJAX. – arogachev
'if (Yii :: $ app-> request-> isAjax)' всегда false, потому что вы не используете правильный yii-вызов ajax. проверьте перед этим вы получите опубликованные данные. –
удалите 'if (Yii :: $ app-> request-> isAjax)'. то он будет работать. –