Skip to content

Instantly share code, notes, and snippets.

@anoriar
Created September 23, 2018 16:46
Show Gist options
  • Save anoriar/ba2a5fecc70af29be4445ffaa2f88704 to your computer and use it in GitHub Desktop.
Save anoriar/ba2a5fecc70af29be4445ffaa2f88704 to your computer and use it in GitHub Desktop.
ajax + mvc
<div class="form-wrap">
<form id="main-form" method="post" action="" data-ajax-url="/ajax/?controller=user&action=send">
<div>
<label for="name">Имя</label>
<input type="text" name="name" required>
</div>
<div class="radio">
<span>Пол</span>
<label>
<input type="radio" name="sex" value="мужской">мужской
<div class="radio-control male"></div>
</label>
<label>
<input type="radio" name="sex" value="женский">женский
<div class="radio-control female"></div>
</label>
</div>
<div>
<label for="email">E-mail</label>
<input type="email" name="email" required>
</div>
<div>
<label for="country">Страна</label>
<select name="country">
<option value="" disabled selected>Выберите страну проживания</option>
<option value="Россия">Россия</option>
<option value="Украина">Украина</option>
<option value="Беларусь">Беларусь</option>
</select>
<div class="select-arrow"></div>
</div>
<div>
<label for="file">Изображение</label>
<input type="file" name="file">
</div>
<button type="submit">Отправить</button>
</form>
</div>
$('#main-form').on('submit', function(e){
e.preventDefault();
//Случай 1 (без файла)
// var formData = decodeURI($(this).serialize());
var ajaxUrl = $(this).data("ajax-url");
$.ajax({
url: ajaxUrl,
// Случай 1 (без файла)
// data: {
// userData: formData
// },
data: new FormData(this),
type: 'POST',
dataType: 'json',
//Случай 1 закомментить эти 2 строки
processData: false,
contentType: false,
success: function(response) {
console.log('response from server: ', response);
}
});
});
<?php
namespace Aero\Tools\Mvc\Controller;
use Aero\Main\Mvc;
use Bitrix\Main\Context;
/**
* Контроллер коллекции Royal
*
*/
class User extends Mvc\Controller\Prototype
{
/**
* Отправляет данные о пользователе
* @return array
*/
public function sendAction(){
$this->view = new Mvc\View\Json();;
$this->returnAsIs = true;
//Случай 1 (без файла)
// $data = [];
// parse_str($this->getParam("userData"), $data);
$request = Context::getCurrent()->getRequest();
$name = $request->getPost("name");
$sex = $request->getPost("sex");
$email = $request->getPost("email");
$country = $request->getPost("country");
$file = $request->getFile('file');
return ["success" => true];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment