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

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

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

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

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

Мой 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>"
            )}
    });
});

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

<?php 
$base = new PDO('sqlite:todo.db');
$sql = $base->prepare("INSERT INTO ThisTable (content, priority) VALUES ('lolololol', 1);");
$sql->execute();
$base = null; 
?>
 Martin30 сент. 2010 г., 12:59
Некоторый код может помочь нам помочь вам.
 mattbasta30 сент. 2010 г., 15:08
Возможно, лучше научиться лучше понимать каждый из инструментов, которые вы упомянули в отдельности, а не в целом. Изучение их как одного может не привести к формированию лучших привычек.

Ответы на вопрос(2)

Решение Вопроса

что 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();
});

Если вы уверены, что используете методы jJuery AJAX, вы можете захотеть взглянуть на такие методы, как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;

Ваш ответ на вопрос