Как обрабатывать в PHP данные, которые были сериализованы и отправлены из jQuery? - PullRequest
2 голосов
/ 16 мая 2011

Я изо всех сил пытаюсь получить вызов $ .ajax для правильной отправки некоторых данных формы в PHP (где они записываются в базу данных и затем отображаются).Я в замешательстве, потому что у меня есть $ .ajax для выполнения подобных задач и раньше, и это прекрасно работает, но я, должно быть, здесь упускаю что-то критическоеЯ исследовал другие ответы (такие как этот ), но не могу найти там ничего, что подсказывало бы, что мой текущий код не будет работать.Любое понимание будет с благодарностью!

Форма выглядит так:

            <div id="note_add_container">
                <form id="note_add" method="POST">
                    <input type="text" name="title" placeholder="title" />
                    <input type="text" name="summary" placeholder="summary" />
                    <input type="text" name="details" placeholder="details" />
                    <button id="submit_note">Add note!</button>
                </form>
            </div>

            <div id="entries">
                <!-- AJAX call will populate entries here -->
            </div> 

Вот jQuery:

    $('#submit_note').click(function () {
        var text = $.ajax ({
            type: "POST",
            url: "note_process.php",
            data: $('#note_add').serialize(), 
            dataType: "json",
            async: false,
        }).responseText;
        $('#entries').html(text); 
    })

Вот PHP note_process.php:

include_once "connect.php";
session_start();

$id = $_SESSION['userid'];
$title = $_POST['title'];
$summary = $_POST['summary'];
$details = $_POST['details'];

$query = mysql_query("INSERT INTO notes (id, title, summary, details) VALUES ('$id', '$title','$summary','$details')");

echo $title . $summary . $details;

Ответы [ 4 ]

1 голос
/ 16 мая 2011

Попробуйте использовать 'success' вместо того, чтобы сделать Ajax-запрос не-асинхронным ...

   $('#submit_note').click(function () {
        $.ajax ({
            type: "POST",
            url: "note_process.php",
            data: $('#note_add').serialize(), 
            success: function(text){
                  $('#entries').html(text); 
            }
        });    
    });
0 голосов
/ 16 мая 2011

Мои выводы по jsFiddle : <button>, похоже, отправляет форму !?Бог знает почему !?Решение довольно простое =) Не используйте <button>

Замените тег BUTTON на тег A, и он отлично работает.

Джордан Ринард имеет хорошее замечание: вы уверены, что ваш URLявляется действительным и правильным?

0 голосов
/ 16 мая 2011

Это предположение:

  1. У вас отключены отчеты об ошибках (плохо в фазе разработки)
  2. title столбец required в вашей таблице notes,
  3. (это факт) вы используете неверный параметр записи в $title = $_POST['type'];

Итак:

  1. $title = $_POST['type']; должен выдать предупреждение, но это не так,
  2. $title будет пустым, и ваш запрос не сможет вставить запись, и вы получите фатальную ошибку, но не увидите ее.
0 голосов
/ 16 мая 2011

Если что-то все еще не работает, я бы устала от того, что ваш URL точен ...
Попробуйте вместо этого использовать абсолютный путь к вашему файлу PHP ... например, "/note_process.php" (или там, где файл расположен относительно корня вашего сайта)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...