Intereting Posts
Laravel 5 – сеанс не работает Как конвертировать текст в изображения на лету? Передача данных с PHP на JavaScript Как мне обрабатывать или улучшать мои аналогичные фильтры в Laravel? Взаимное исключение PHP в файле / MySQL, считывание и выполнение операторов из файла с использованием perl php preg_match, сопоставление, когда 2 слова могут входить в случайную последовательность Экспорт веб-страницы в PDF с помощью FPDF как сохранить выбранные значения в поле «Выбрать» после отправки формы? Есть ли способ исключить домен из создания ссылок в wordpress Как экспортировать часть таблицы как SQL в Adminer? PHP Socket Server vs node.js: веб-чат Безопасное извлечение вывода для обоих полей html и ввода Как повторить транзакцию после тупика с помощью Doctrine? Доступ к Symfony / web / config.php с другого адреса, чем localhost? Получить PHP для обновления с каждой строкой, возвращаемой командой оболочки

Простейший пример jQuery, PHP, AJAX и sqlite?

Мне очень сложно понять, как все это работает. Я провел несколько дней с этим и не смог придумать никаких результатов. Я пытаюсь заполнить текстовое поле в форме, и когда форма отправлена, я хочу добавить текст в свой sqlite db с помощью ajax.

Я понимаю, что вам нужен вызов $ .get в jquery, который запускается в submit. Это похоже на то, что я могу запускать js-боксы. Однако, когда я передаю адрес php-скрипта, у которого есть строки для добавления в sqlite db с использованием PDO, в db ничего не добавляется. Однако, когда я запускаю этот php-скрипт с помощью php cli, что-то добавится в db.

Кажется, я не вижу здесь существенного шага. Я был бы очень признателен, если бы кто-то смог преодолеть этот пробел для меня!

Изменить: по просьбе Мартина есть код:

Мой php создает такой список с формой в середине:

<ul> <li>hello</li> <li id="formItem"> <form action="" method="post"> <input type=text name="content"/> </form> </li> <li>world</li> </ul> 

Затем мой код jquery выглядит так, чтобы добавить все, что находится в текстовое поле прямо над ним, в списке есть вызов ajax. Это внутри $ (document) .ready (function () {.

  $("form").submit(function() { var inputText = $("input").val(); $.ajax({ type: "POST", url: "add.php", data: inputText, success: function() { $('#formItem').prev().after( "<li>" + inputText + "</li>" )} }); }); того, как  $("form").submit(function() { var inputText = $("input").val(); $.ajax({ type: "POST", url: "add.php", data: inputText, success: function() { $('#formItem').prev().after( "<li>" + inputText + "</li>" )} }); }); 

Мой файл add.php выглядит так, и он будет вставлять что-то в мой db, если я выполню скрипт php на cli:

 <?php $base = new PDO('sqlite:todo.db'); $sql = $base->prepare("INSERT INTO ThisTable (content, priority) VALUES ('lolololol', 1);"); $sql->execute(); $base = null; ?> 

Не забывайте, что HTTP – это протокол без учета состояния. Каждый HTTP-запрос, который вы делаете на ваш веб-сервер, обрабатывается одинаково. Это означает, был ли HTTP-запрос выполнен с использованием AJAX или нет.

Я пытаюсь сказать, что AJAX – это реализация на стороне клиента. Все AJAX означает, что вы можете взаимодействовать с вашим веб-сервером, не перезагружая свою страницу. Внедрение запроса AJAX в первый раз в JavaScript часто является изгибом мозга, потому что требование обратных вызовов и общий асинхронный характер взаимодействия затрудняют понимание.

Однако на сервере не о чем беспокоиться. Запрос AJAX по-прежнему является HTTP-запросом, поэтому независимо от того, переходите ли вы в http://www.yourwebsite.com/ajax/interact.php?a=1&b=2 в своем браузере или делаете запрос HTTP GET с помощью AJAX, ваш PHP сценарий будет по-прежнему вести себя точно так же. Если вы var_dump($_GET); в любой ситуации вы получите массив, чьи члены a и b равны 1 и 2 соответственно.

Если вы можете успешно эмулировать запрос AJAX в своем браузере, вручную перейдя по URL-адресу, это работа сервера.

Установив это, ваш JavaScript должен выглядеть примерно так:

 $('#yourForm').bind('submit', function (event) { jQuery.get('/ajax/interact.php', 'a=1&b=2', function (response) { alert("AJAX request succeeded, response from the server was: " + response); }); event.preventDefault(); }); 

После того, как вы уверены в использовании методов AJAX jQuery, вам может понадобиться изучить методы, такие как serialize() чтобы помочь вам, и вы можете разработать код jQuery для чего-то следующим образом:

 $('form.ajax').live('submit', function (event) { var self = $(this); jQuery[(self.attr('method') || 'get').toLowerCase()](self.attr('action'), self.serialize(), function (response) { alert("AJAX request succeeded, response from the server was: " + response); }); event.preventDefault(); }); 

Надеюсь это поможет 🙂

Функция submit должна return false;