//Отправка формы изменения товара AJAX-oм
$(document).on("submit", ".update_form", function () {
//Сама форма
var form = $(this),
id = form.attr('data-id');
$.ajax({
type: form.attr('method'),
url: '/admin/my-products/update-ajx/' + id,
data: form.serializeArray(),
}
)
//Запрос отправлен
.done(function(data) {
// $('#product-form')[0].reset();
if (data.validation) {
//Не прошла валидация с сервера
form.yiiActiveForm('updateMessages', data.validation, true); // renders validation messages at appropriate places
} else {
jQuery('.my_own_info').html(data);
window.history.replaceState('admin', null, '/admin/my-products/index');
}
})
.fail(function () {
//Запрос не ушел
alert('Ошибка, попробуйте позже');
})
return false; //
});
$('body').on('click', '.content_nav>.my_feed_ajx', function () {
//Запрос
$.ajax({
type: 'POST',
url: '/admin/own-ajx/index',
dataType: "html",
success: function (data) {
//Если вернет вид
if (jQuery('.my_own_info').html(data)) {
//Подменяю url будто я обычным запросом сюда перешел
//И если пользователь обновит страничку, обычный запрос полетит по это адресу
window.history.replaceState('admin', null, '/admin/own/index');
}
},
//Если прошел таймаут(еще не ставил)
error: function () {
переход по обычной ссылке
$(location).attr('href','/admin/own/index');
}
});
});
С какого перепугу возникнет ситуация при которой на этот /ajax/product?id=1 надо будет попасть через обычный get?
Я бы вообще вынес ajax запросы в отдельный контролер. А на разные экшены раздробить точно надо.
class OwnController extends Controller
{
public function actionIndex()
{
return $this->render('index');
}
}
class OwnAjxController extends Controller
{
public function actionIndex()
{
//Если пришел AJAX запрос
if (Yii::$app->request->isAjax) {
return $this->renderAjax('index');
}
}
}
$('body').on('click', '.content_nav>.my_feed_ajx', function () {
//Запрос
$.ajax({
type: 'POST',
url: '/admin/own-ajx/index',
dataType: "html",
success: function (data) {
if (jQuery('.my_own_info').html(data)) {
window.history.replaceState('admin', null, '/admin/own/index');
}
},
error: function () {
$(location).attr('href','/admin/own/index');
}
});
});
//Кол-во блоков с классом .server_img(То есть блоков с именами)
var path = $('.server_img').length;
//Сколько картинок столько и циклов
for (i = 1; i <= path; i++) {
//Имя каждой
var img_name = $('#server_img_' + i).text(),
mockFile = { name: img_name };
//Добавляем файл drop-zon через событие
myDropzone.emit("addedfile", mockFile);
//Делаем превьюху по Url где хранятся загруженные картинки
myDropzone.emit("thumbnail", mockFile, "/web/upload/store/Products/" + mockFile.name);
//Даем статус загруженные
myDropzone.emit("complete", mockFile);
}