+$(".form-submit").on("click", ".product__add", function () {
-$(".product__add").on("click", function () {
На сервере пытаюсь принять так:Нет, ищите в $_POST
header: 'Content-Type: application/json',
а это лишнее.$.ajax({
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify({ some valid JSON})
...
Вроде запрос уходитЧто в пэйлоаде? Вангую что там ничего связанного с $_POST переменными нет...
contentType:"application/json; charset=utf-8"Так как вы явно указываете что будете передавать строку жсон в теле запроса, не понятно что вы пытаетесь найти в $_POST.
<?echo($_POST);?>Во первых отвыкайте использовать шорт теги, во вторых переменная $_POST это массив, и соответственно через ехо его выводить бессмысленно, и в третьих, как я написал выше, там ничего нет, так как данные передаются в теле запроса.
С помощью JS я получаю кое какие значения. И мне их нужно отправить на страницу, чтобы сторонний парсер зашел на эту страницу и смог их прочитать.Во первых, сторонний парсер скорее всего не увидит ваши значения полученные через js, так как 99% парсеров читают текст страницы, но не выполняют скрипты, а значит они увидят ровно ничего. Во вторых надо разобраться с кашей в голове и в коде. Давайте смотреть:
При обновлении страницы значение txt не приходит на страницу,Оно не на страницу должно приходить, а в переменную data внутри скрипта.
отображается null и код $('p.out').text(data);Нулл отображается так как вы открыли страничку методом get, соответственно переменная $_POST абсолютно пустая. Далее вы скриптом запросили страничку уже методом POST, и в ответ получили ВЕСЬ ЗАПРОШЕННЫЙ ФАЙЛ, начиная с
<html>
и далее весь текст страницы. Ну и в конце уже правильный ответ в json, так как сейчас метод запроса POST. json_encode($arr);
, то выводить его надо ДО вывода всей остальной страницы, и на этом сказать скрипту строгое "стопэ, дальше не надо", при этом если метод НЕ ПОСТ, то пхп скрипт вывода срабатывать вообще не должен. Как это реализовать оставляю на вашу фантазию, сообразительность и умение пользоваться гуглом. $('form').on('submit', function(e){...});
, в этом контексте this внутри функции будет сразу целевой формой, не надо выкрутасов с поиском текущей формы. var form = $('#callbacks')[0];
всегда вернет первый элемент из списка форм, даже если там все будет правильно выбираться по идентификаторам. Пробовал таким образом работает но выводит помимо данных сверху еще один шаблон страницы и этот вариант с кнопкой для отправкиСмысл аякс запроса подгружать не всю страницу (что у вас и происходит), а только тот кусок который должен меняться, соответственно на сервере либо пишете условие что при методе пост отдавать только нужный кусок (а не рендерить весь шаблон), либо делаете отдельный урл, который будет отдавать этот кусок. Первый вариант обычно предпочтительней, так как часть кода будет переиспользована.
а как мне сделать отправку из формы без кнопки submit?Ну, пользователь должен как-то понять что делать когда закончился ввод и нужно отправить данные. Вообще, без кнопки субмит, ентер срабатывает как субмит, но тут у вас не видно какая форма и как вы хотите чтобы форма отправлялась "без кнопки", так как
Мой вариант htmlнихрена не хтмл, а шаблон вывода, к хтмл имеющий весьма опосредованное отношение, и самой формы в нем как бы нету...
Ajax, как я понял, существует для передачи данных на сервер и обработки ответа от него.Важное уточнение - без перезагрузки страницы. То есть как раз поведение противоположное тому что вам надо.
Знаю, что можно сохранять их, например, в локальном хранилище или куках, но... Выглядит это не особо профессионально :D.Зависит от целей и задач передачи. Если данные чисто информационного характера, не влияющие на функционал серверной части, то хранение в куках или локалстораже оправдано (например некоторая кастомизация внешнего вида станиц на основе жс и переменных из локального хранилища). Защищенные данные обычно хранят на стороне сервера, например в сессии.
Но это не происходит,Все что "не происходит", "не работает", "работает не так" - термины уборщицы из туалета. Любое программное действие вызывает какой-то описываемый результат - ошибку (которую нужно привести дословно) или конкретное действие (которое тоже поддается описанию, например нужно А, но происходит Б).
По мне при вводе в текстовое поле должен быть GET запрос, и формируется $sql переменный и получаются данные.Скорее всего все так и происходит, только данные заговнячены, запрос гоняется 2 раза просто так, а с полученными данными все равно ничего не делается...