На моей странице JSP, я определил некоторые JavaScript с переменным получить значение из моей модели контроллера:Обновления Javascript буквального на странице с помощью асинхронной функции
<!-- checkout.jsp excerpt -->
<script type="text/javascript">
var form = {};
form.checkout = {
"firstName" : ${checkoutForm.firstName}, // John
"lastName": ${checkoutForm.lastName} // Doe
};
</script>
<script type="text/javascript" src=SOME_DOMAIN/static/js/checkout.js"></script>
На той же странице, я включил файл JS (checkout.js), который отобразит форму, чтобы изменить это значение на странице.
// Somewhere in "checkout.js"
var billingStr = form.checkout.firstName + ' ' + form.checkout.lastName;
$("#billing-info-Modal").find(".modal-footer").find(".btn-primary").click(function(e){
var formBody = $("#billing-checkoutForm");
// 3. update the js literal object on the page
// alert(billingStr); result John Doe
form.checkout.firstName = $(formBody).find("#billing-firstname").val(); // Peter
form.checkout.lastName = $(formBody).find("#billing-lastname").val(); // Grimes
// alert(form.checkout.firstName + ' ' + form.checkout.lastName); // Peter Grimes
// alert(billingStr); result John Doe still!!
// 4. update Billing address section
$('#billingAddress').find('p').html(billingStr);
// 5. close the modal
$("#billing-info-Modal").modal('hide');
e.preventDefault();
});
Вот отрывок из моей модальной формы:
<div class="modal hide" id="billing-info-Modal">
<table id="billingTable">
<tr class="required">
<td><label for="billing-firstname">First Name <span>*</span></label></td>
<td><form:input id="billing-firstname"
path="bFirstName" cssClass="textField" /> <form:errors
path="bFirstName" cssClass="errors" /></td>
</tr>
<tr class="required">
<td><label for="billing-lastname">Last Name <span>*</span></label></td>
<td><form:input id="billing-lastname"
path="bLastName" cssClass="textField" /> <form:errors
path="bLastName" cssClass="errors" /></td>
</tr>
</table>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
Основные функциональные страницы:
Я бы добавить ар тег с формой буквального на странице load
пользователь нажмет кнопку, которая выведет модальную форму с формой, в которой они могут изменить имя и фамилию.
- Когда пользователь нажимает «Сохранить изменения» на модальном, задайте для него form.checkout.firstName и form.checkout.lastName с новыми значениями. Я намерен использовать form.checkout как объект, который будет представлен позже. Поэтому точность важна.
- Я хотел бы обновить тег p обновленным именем и фамилией
- закрыть модальный.
Возможно, я смущен. Я думал, что могу обновить литеральный объект js, установив его как: form.checkout.firstName = "something". Неужели я ошибаюсь? Я вижу, что переменная внутри моей функции меняется, но она не влияет на внешнюю. Я думал, что когда переменная, объявленная как var на странице, имеет глобальную область. Таким образом, его можно манипулировать в любом месте страницы. Я тоже ошибаюсь?
Любое понимание было бы благодарно !!! Заранее спасибо.