Ответы пользователя по тегу AJAX
  • Как обновить блок после удаления и добавления и получить данные для редактирования?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Первое что надо сделать - нормальные запросы с подготовленными выражениями, а не дырявые инъекции...

    Второе - возвращать нормальные данные с понятным (машине) результатом операции, а не текстовый поток сознания. Для этого существует json, который обычно в подобных ситуациях содержит: Код ошибки, текст ошибки, и сообщение для вывода, где первое поле содержит цифру (обычно просто 1 в случае ошибки или 0 в случае успеха), второе поле является необязательным, но сильно облегчает дебаг, и третье - как раз может содержать ваше словесное описание.

    Далее, по результату выполнения операции на бэкенде, исходя из данных полученных обратно аяксом уже решаем что делать, если ошибка - ничего не трогаем, если ошибки нет - добавляем/удаляем строки в таблице. Удаление - банально что-то типа del_button.closest('tr').delete() (емнип). С добавлением сложнее, но в целом ничего особенного, можно засовывать в конец списка, так как не вижу там у вас никакой сортировки при выборке. Строку формируете либо в колбэке, либо можно возвращать готовую в дополнительном поле возвращаемого жсона, и уже оттуда только добавить готовую новую ноду внутрь таблицы.

    Так же, учитывая что новые элементы не будут работать при добавлении, так как на них не навешены слушатели, либо каждый раз перезапускать навешивание листенеров, либо нормально сделать делегирование для кнопки удаления.
    Ответ написан
    Комментировать
  • Почему при ajax запросе на php файл ничего не приходит?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вроде запрос уходит
    Что в пэйлоаде? Вангую что там ничего связанного с $_POST переменными нет...

    contentType:"application/json; charset=utf-8"
    Так как вы явно указываете что будете передавать строку жсон в теле запроса, не понятно что вы пытаетесь найти в $_POST.

    <?echo($_POST);?>
    Во первых отвыкайте использовать шорт теги, во вторых переменная $_POST это массив, и соответственно через ехо его выводить бессмысленно, и в третьих, как я написал выше, там ничего нет, так как данные передаются в теле запроса.
    Ответ написан
  • Почему не приходит значение переменной при Ajax запросе на страницу отправки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    С помощью JS я получаю кое какие значения. И мне их нужно отправить на страницу, чтобы сторонний парсер зашел на эту страницу и смог их прочитать.
    Во первых, сторонний парсер скорее всего не увидит ваши значения полученные через js, так как 99% парсеров читают текст страницы, но не выполняют скрипты, а значит они увидят ровно ничего. Во вторых надо разобраться с кашей в голове и в коде. Давайте смотреть:

    При обновлении страницы значение txt не приходит на страницу,
    Оно не на страницу должно приходить, а в переменную data внутри скрипта.

    отображается null и код $('p.out').text(data);
    Нулл отображается так как вы открыли страничку методом get, соответственно переменная $_POST абсолютно пустая. Далее вы скриптом запросили страничку уже методом POST, и в ответ получили ВЕСЬ ЗАПРОШЕННЫЙ ФАЙЛ, начиная с <html> и далее весь текст страницы. Ну и в конце уже правильный ответ в json, так как сейчас метод запроса POST.
    Для особо... задумчивых - в аякс колбэк в переменную data возвращается ВСЕ что вернул сервер, а не только то что вы себе нафантазировали.

    Закономерный вопрос, я бы сказал классика русской философии - что делать? Во первых, разобраться как это все работает и почему все именно так как получилось. Чисто для лучшего понимания как вообще работает связка пхп-жс-аякс (ну и все подобные взаимодействия клиент-сервер). Ну и логично что если нам нужно получить только json_encode($arr);, то выводить его надо ДО вывода всей остальной страницы, и на этом сказать скрипту строгое "стопэ, дальше не надо", при этом если метод НЕ ПОСТ, то пхп скрипт вывода срабатывать вообще не должен. Как это реализовать оставляю на вашу фантазию, сообразительность и умение пользоваться гуглом.
    Ответ написан
    5 комментариев
  • Выдает ошибку при создании AJAX запроса (POST http://blackmamba/score.php 404 (Not Found) ) очки score должны передаваться из js в php(?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    при создании AJAX запроса (POST blackmamba/score.php...
    и
    xhr.open('POST', 'score.php',
    как-то не стыкуется...
    Ответ написан
  • Как через ajax получить ответ из страницы php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    для аякса предусмотрены колбэк функции, в частности онсаксесс(дата), где в "дата" попадает ответ сервера. То есть код в этой функции будет вызываться в случае успешного выполнения скрипта на сервере (статус 200). Пишете там свое изменение статуса корзины и все, профит.
    Ответ написан
    4 комментария
  • Как получить компонент Laravel через AJAX?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    return (String) view('template.name');
    или
    $view=view('template.name');
    $view=$view->render();
    $responseData->responseSuccess($view);
    Ответ написан
    Комментировать
  • Ajax подключённый к форме не работает?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $('#form').on('submit',function (e) {
      e.preventDefault();
    ...
    Ответ написан
    2 комментария
  • Первый раз форма срабатывает, второй раз обновление страницы AJAX?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Судя по коду, вы при редактировании создаете новую форму. Так как биндинг события происходит по загрузке документа, а форма создается после этого, соответственно событие на свежесозданной форме не будет отслеживаться и форма просто срабатывает стандартно. Меняйте биндинг на делегирование, то есть отслеживайте событие document.
    Ответ написан
  • Ajax в OpenCart 3 — как?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $('#btn-account-edit-popup').on('click', function(e) {
    e.preventDefault();
    ...

    И по уму обработчик вешается на субмит формы, а не на клик кнопки. Почему - подумайте самостоятельно.
    Ответ написан
    1 комментарий
  • Как получить разный текст после ответа сервера от checkbox на ajax?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    js
    ...
    success: function(data){
       $('#result').text(data);
    }
    ....

    php
    ...
    if ($res == 'Yes') {echo "Функция включена";}
          else {echo "Функция выключена";}
         exit();
         } 
    $smarty->display('users.html');
    ...
    Ответ написан
  • Не могу сделать чтоб обновлять количество товара в корзине?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) id="btncontcall" у вас повторяется в каждом выведенном элементе. По стандарту (да и чисто по логике), id - уникальный идентификатор (где уникальный - ключевое слово). На странице должен быть только один элемент с таким значением. Что легко проверить, заглянув в консоль и увидев кучу предупреждений о дублирующихся идентификаторах.
    2) Не надо вешать обработчик на кнопку, вешайте на форм.субмит. Естественно айди формы тоже должно быть уникальным. Хотя в вашем случае айди вообще использовать не нужно, используйте либо класс, либо, что в данном случае гораздо логичнее, собственно тег form - $('form').on('submit', function(e){...});, в этом контексте this внутри функции будет сразу целевой формой, не надо выкрутасов с поиском текущей формы.

    Тем более что ищете вы всегда первую, даже в неправильном коде: var form = $('#callbacks')[0]; всегда вернет первый элемент из списка форм, даже если там все будет правильно выбираться по идентификаторам.
    Ответ написан
    Комментировать
  • Как получить данные из формы без кнопки submit и перезагрузки страницы?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Пробовал таким образом работает но выводит помимо данных сверху еще один шаблон страницы и этот вариант с кнопкой для отправки
    Смысл аякс запроса подгружать не всю страницу (что у вас и происходит), а только тот кусок который должен меняться, соответственно на сервере либо пишете условие что при методе пост отдавать только нужный кусок (а не рендерить весь шаблон), либо делаете отдельный урл, который будет отдавать этот кусок. Первый вариант обычно предпочтительней, так как часть кода будет переиспользована.

    а как мне сделать отправку из формы без кнопки submit?
    Ну, пользователь должен как-то понять что делать когда закончился ввод и нужно отправить данные. Вообще, без кнопки субмит, ентер срабатывает как субмит, но тут у вас не видно какая форма и как вы хотите чтобы форма отправлялась "без кнопки", так как
    Мой вариант html
    нихрена не хтмл, а шаблон вывода, к хтмл имеющий весьма опосредованное отношение, и самой формы в нем как бы нету...
    Ответ написан
  • Как можно перенести статьи с бд сайта на php в бд wordpress?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    1) Сравнить структуры стандартной вордпресной базы и текущей,
    2) составить алгоритм переноса,
    3) написать скрипты переноса, либо, если это возможно, перенести данные посредством соответствующих запросов напрямую
    4) Скорее всего базы будут сильно отличаться друг от друга и написание скриптов переноса потянет на отдельную большую статью, ввиду того что бд вордпресса, мягко говоря, не образец оптимальной продуктивной структуры (про неясную структуру бд текущего сайта скромно умолчим).

    ЗЫ: А вообще вопрос про "в огороде бузина, а в киеве дядька"... Первая часть вообще никак не несет какую-либо информационную нагрузку.
    Ответ написан
    Комментировать
  • Можно ли и как обработать ajax в js?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Ajax, как я понял, существует для передачи данных на сервер и обработки ответа от него.
    Важное уточнение - без перезагрузки страницы. То есть как раз поведение противоположное тому что вам надо.

    Знаю, что можно сохранять их, например, в локальном хранилище или куках, но... Выглядит это не особо профессионально :D.
    Зависит от целей и задач передачи. Если данные чисто информационного характера, не влияющие на функционал серверной части, то хранение в куках или локалстораже оправдано (например некоторая кастомизация внешнего вида станиц на основе жс и переменных из локального хранилища). Защищенные данные обычно хранят на стороне сервера, например в сессии.

    А для передачи пользовательских данных обычно используются формы (пример - логин или регистрация), которые передают от одной страницы в другую зашифрованные данные либо как параметры урл (метод гет), либо через заголовки и тело запроса (метод пост).
    Ответ написан
    1 комментарий
  • Почему не срабатывает ajax и нет ошибок?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    открываем инструменты разработчика - нетворк, делаем клик, смотрим что и куда ушло, какой код вернуло, что попало в респонс и что ушло в пэйлоад. После этого думаем, что пошло не так, правим, наслаждаемся заслуженными аплодисментами...
    Ответ написан
  • Как повторять ajax post-запрос до определенного значения ответа или как выполнять php-функцию и возвращать промежуточные результат юзеру?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    скорее всего вам нужно что-то типа фетч прогресс, а в пхп сделать цикл c выводом данных, и заменить die на echo.
    Ответ написан
    1 комментарий
  • Почему я не могу получить новые значения $_GET в AJAX+PHP, кто-то может помочь?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Но это не происходит,
    Все что "не происходит", "не работает", "работает не так" - термины уборщицы из туалета. Любое программное действие вызывает какой-то описываемый результат - ошибку (которую нужно привести дословно) или конкретное действие (которое тоже поддается описанию, например нужно А, но происходит Б).

    1) Внятно опишите чего вы хотите добиться, а то код у вас сплошная мешанина хтмл, жс и пхп, а сама цель вообще не ясна.
    2) Проверьте консоль браузера на ошибки, они там наверняка есть
    3) Проверьте нетворк, посмотрите что возвращает ваш аякс запрос (хинт - в основном мусор), подумайте почему.

    По мне при вводе в текстовое поле должен быть GET запрос, и формируется $sql переменный и получаются данные.
    Скорее всего все так и происходит, только данные заговнячены, запрос гоняется 2 раза просто так, а с полученными данными все равно ничего не делается...

    PS:
    запросы всегда нужно делать через подготовленные выражения,
    пхп код ВЕСЬ выносится ДО хтмл. В нужных местах в хтмл вы просто выводите заранее полученные значения.
    Ответ написан
  • Почему приходит пустой AJAX запрос из контроллера в Laravel?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    if($request->ajax()){
       echo $request->orderBy; // ретурн тут до жопы, кому ты его возвращаешь?
       exit(); // иначе дальше выполнение идет и как раз получаешь всю страницу.
    }

    Естественно надо проверить что условие выполняется, а $request->orderBy не пустой и содержит строку/жсон.
    Ответ написан
  • Почему FormData пустой?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    1) Как верно заметил TheAndrey7 в комментариях, слушать надо субмит формы (например, отправить форму я могу нажав ентер в любом текстовом инпуте), это хорошая практика, вешать слушатель на кнопку - плохая идея. И форму можно получить сразу через new FormData(this), что не требует мутных манипуляций с отдельными элементами.
    2) так же не хватает настроек аякса,
    processData: false,
    contentType: false,

    во всех FormData пустой
    Как вы это проверяли? емнип через консоль.лог датаформ не выводится, можете посмотреть что отправляется в нетворке, вкладка пэлоад.
    Ответ написан
    3 комментария
  • Как сделать анимацию смены картинки в шапке при скролле?

    ThunderCat
    @ThunderCat Куратор тега CSS
    {PHP, MySql, HTML, JS, CSS} developer
    Логотип прописываете как бэкграунд элемента, у элемента меняете класс (так же как у навбар), класс задает нужные картинки.
    Ответ написан
    Комментировать