Для начала вы можете использовать динамическое программирование.
В вашем прямом подходе вы делаете точно такие же вычисления много раз.
Например, в какой-то момент вы ответьте на вопрос: «Для последних трех столбцов с уже занятыми строками 1 и 2, как я могу максимизировать сумму?» Вы дважды вычисляете ответ на этот вопрос, один раз, когда вы выбираете строку 1 из столбца 1 и строки 2 из столбца 2 и один раз, когда вы выбираете их наоборот.
Так что не делайте этого. Cache ответ, а также кешировать все похожие ответы на все подобные вопросы - и повторно использовать их.
У меня нет времени прямо сейчас, чтобы проанализировать время работы этот подход. Я думаю, что это O (2 ^ n) или около того. Позже может быть ...
Вы можете использовать функции ajaxForm/ajaxSubmit из Ajax Form Plugin или функцию сериализации jQuery.
AjaxForm:
$("#theForm").ajaxForm({url: 'server.php', type: 'post'})
или
$("#theForm").ajaxSubmit({url: 'server.php', type: 'post'})
ajaxForm отправит при нажатии кнопки отправки. ajaxSubmit отправляет немедленно.
Serialize:
$.get('server.php?' + $('#theForm').serialize())
$.post('server.php', $('#theForm').serialize())
. Я знаю, что это jQuery
связанный вопрос, но теперь дни с вещами JS ES6 намного легче. С тех пор нет никакого чистого javascript
ответ, я думал, что мог добавить простое чистое javascript
решение этого, которое, по-моему, является намного более чистым, при помощи fetch()
API. Это современный путь к сетевым запросам реализаций. В Вашем случае, так как у Вас уже есть элемент формы, мы можем просто использовать его для создания нашего запроса.
const form = document.forms["orderproductForm"];
const formInputs = form.getElementsByTagName("input");
let formData = new FormData();
for (let input of formInputs) {
formData.append(input.name, input.value);
}
fetch(form.action,
{
method: form.method,
body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.log(error.message))
.finally(() => console.log("Done"));
Есть также событие submit, которое может быть вызвано следующим образом $("#form_id").submit(). Вы бы использовали этот метод, если форма уже хорошо представлена в HTML. Вы просто читаете на странице, заполняете входные данные формы материалом, затем вызываете .submit(). Он будет использовать метод и действие, определенные в объявлении формы, так что вам не нужно копировать его в ваш javascript.