У меня есть параметр variableId, который определяет, буду ли я выполнять POST или PUT Ajax Call: var settingId = form.data ('setting');
if ((typeof settingId === "undefined")){ method = 'POST'; url = '{{ url("/tournaments") }}' + '/' + tournamentId + '/categories/' + categoryId + '/settings'; }else{ method = 'PUT'; url = '{{ url("/tournaments") }}' + '/' + tournamentId + '/categories/' + categoryId + '/settings/' + settingId ; }
Он отлично работает, но когда я делаю POST, мне нужно обновить это значение переменной, так что этот же тест дает мне PUT, и я не могу этого сделать.
Прямо сейчас, я делаю это так, но, очевидно, это не так:
form.data['setting'] = data.settingId;
Моя форма:
<form method="POST" action="http://laravel.dev/tournaments/3/categories/2/settings/11" accept-charset="UTF-8" class="form-settings" data-tournament="3" data-category="2" data-setting="11">
…
JS:
$('.save_category').on('click', function (e) { e.preventDefault(); var inputData = $('.save_category').serialize(); var form = $(this).parents('form:first'); var tournamentId = form.data('tournament'); var categoryId = form.data('category'); var settingId = form.data('setting'); console.log(tournamentId); console.log(categoryId); console.log(settingId); $(this).find('i').removeClass(); $(this).find('i').addClass('icon-spinner spinner position-left'); $(this).prop( "disabled", true ); var panel = $(this).closest('.panel'); var method = null; var url = null; if ((typeof settingId === "undefined")){ method = 'POST'; url = '{{ url("/tournaments") }}' + '/' + tournamentId + '/categories/' + categoryId + '/settings'; }else{ method = 'PUT'; url = '{{ url("/tournaments") }}' + '/' + tournamentId + '/categories/' + categoryId + '/settings/' + settingId ; } $.ajax( { type: method, url: url, data: inputData, success: function (data) { if (data != null && data.status == 'success') { noty({ layout: 'topRight', type: 'success', width: 200, dismissQueue: true, timeout: 3000, text: data.msg }); // Change warning icon to success panel.find('.status-icon').removeClass().addClass('glyphicon glyphicon-ok text-success status-icon'); console.log(data); form.data['setting'] = data.settingId; } else { noty({ layout: 'topRight', type: 'error', width: 200, dismissQueue: true, timeout: 3000, text: data.msg }); } $('.save_category').prop( "disabled", false ); $('.save_category').find('i').removeClass('icon-spinner spinner position-left'); }, error: function (data) { noty({ layout: 'topRight', type: 'error', width: 200, dismissQueue: true, timeout: 3000, text: data.msg }); $('.save_category').prop( "disabled", false ); $('.save_category').find('i').removeClass('icon-spinner spinner position-left'); } } ) });
Есть идеи????
Пытаться
$(form).data( 'setting' , data.settingId );
Просто сделайте это с помощью jQuery:
$('form .form-settings').attr('data-setting', data.settingId);