Показать сообщение отдельно
  #6 (permalink)  
Старый 10.08.2017, 22:17
Интересующийся
Отправить личное сообщение для Tomson123 Посмотреть профиль Найти все сообщения от Tomson123
 
Регистрация: 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().
Спасибо, от части мысль понел! Буду эксперементировать=)
Ответить с цитированием