10.08.2017, 22:17
|
Интересующийся
|
|
Регистрация: 10.08.2017
Сообщений: 10
|
|
Сообщение от laimas
|
<form method="POST" id="formx" action="javascript:void(null);" onsubmit="call()"/>
function call() {..
$(function() {
$('#formx').submit(function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: 'index.php?act=add&id=".$id."',
dataType:'text',
data: msg,
...
})
})
});
url: 'index.php?act=add&id=".$id."', - это и плохо, и ошибка.
Пояснить.
|
Сообщение от laimas
|
Так и предается - через URL запроса, а POST данные передаются в теле запроса. Но, так как вы делаете, выводя скрипт посредством РНР ради того, чтобы указать переменную, это не самый лучший способ, для формы тем более. Данный обработчик вполне можно прописать в подключаемом скрипте, в обработчике загрузки страницы:
$(function() {
//.....
})
Думаю, что такое в вашем коде уже есть. URL запроса же, который будет содержать и переменную $id прописать в action формы, ибо форму в любом случае будет отдавать сервер:
<form id="formx" action="index.php?act=add&id=<?=$id?>">
В Ajax запросе получить этот адрес у формы:
$('#formx').submit(function(e) {
e.preventDefault(); //отмена действия по умолчанию
$.ajax({
type: 'POST',
url: this.action, //URL запроса
dataType:'text',
data: $(this).serialize(), //данные формы
//... код далее
})
});
Ну в общем то, для этого и не нужно ничего возвращать серверу, достаточно клиенту ответить, что добавление записи Ок, и что было в форме пометить на страницу, и очистить форму.
Если же все таки требуется "вмешательство" в данный процесс сервера, например он снабжает эти данные еще какими либо сопутствующими добавленной записи (вложенные запросы к связанным таблицам), то тогда после записи данных формы нужно получить ID этой записи. Сделать запрос по этому ID, получить и отправить клиенту.
Но если переменная $id, это и есть добавленная запись (то есть вы так полагаете), то это конечно же не так.
И вот это htmlentities() слишком, достаточно htmlspecialchars().
|
Спасибо, от части мысль понел! Буду эксперементировать=)
|