У меня есть форма редактирования, которую я использую для обновления данных о практиках, я хочу, чтобы она оставалась на той же вкладке под названием #practitioner
(в которой у меня есть @include Practitioner-Display и @include Practitioner-Edit).Для переключения между этими двумя включениями я использую editPractitionerButton.js
(код ниже).
Я уже сделал скрипт .js, который вроде как делает то, что я хочу, он остается на вкладке #practitioner, но на практикующейредактировать, не идет на дисплей практикующего.Кроме того, обновленные данные не видны, это только после обновления веб-сайта вручную.
моя функция:
$(document).ready(function () {
$('#practitioner_edit_form').on('submit', function(e) {
e.preventDefault();
$.ajax({
url : $(this).attr('action') || window.location.pathname,
type: "POST",
data: $(this).serialize(),
success: function (data) {
//window.location = $('.nav-tabs a[href="#practitioner"]').tab('show');
/*^reloads my page to http://rps.me/person/profile/49/[object%20Object] from http://rps.me/person/profile/49/Smith*/
$('.nav-tabs a[href="#practitioner"]').tab('show');
/*^stays in the form after submitting, changed data isn't visible, only after reload, but I want to reload to correct nav tab*/
/*location.reload();*/
},
error: function (jXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
});
функция контроллера:
public function updatePractitioner(Request $request, $id)
{
$this->validate($request, [
'effective_date' => 'required',
]
);
$fields = $request->all();
$specialtyfields = (['effective_date'=>$request->get('effective_date_specialty'), 'expiry_date'=>$request->get('expiry_date_specialty')]);
$primary_key = $this->PractitionerRepository->getIdName();
$primary_key_specialty = $this->PractitionerSpecialtyRepository->getIdName();
$practitioner_specialty_id = PractitionerSpecialty::where('practitioner_id', $id)->value('practitioner_specialty_id');
$fields[$primary_key] = $id;
$this->PractitionerRepository->update($fields);
$specialtyfields[$primary_key_specialty] = $practitioner_specialty_id;
$this->PractitionerSpecialtyRepository->update($specialtyfields);
return back()->with('successUpdate', 'Practitioner has been updated!');
}
файл формы (только кнопки):
<form> [...]
<button type="submit"
class="btn btn-editpanel btn-success btn-round">Save changes
</button>
<!-- end /.footer -->
<button id="update-cancel-button-practitioner" href="javascript:window.location.href=window.location.href" type="button"
class="btn btn-editpanel btn-danger btn-round">Cancel
</button>
</form>
editPractitionerButton.js
function editPractitionerButton() {
var editInfoSelector = $('.edit-practitioner');
var viewInfoSelector = $('.view-practitioner');
var editBtnSelector = $('#edit-practitioner-btn');
editInfoSelector.css('display', 'none');
editBtnSelector.click(function(){
if (viewInfoSelector.is(':visible')) {
viewInfoSelector.css('display', 'none');
editInfoSelector.css('display', '');
} else {
viewInfoSelector.css('display', '');
editInfoSelector.css('display', 'none');
}
});
}
Поэтому я хочу обновить страницу и перейти на вкладку #practitioner.Может быть, вместо файла JS, я могу сделать определенный возврат в функции контроллера?