Отправка формы PHP + jQuery + Ajax - возвращать результаты на той же странице - PullRequest
4 голосов
/ 15 апреля 2011

Я хотел бы иметь следующее:

Пользователь отправляет форму щелчком мыши (index.php), ввод формы обрабатывается внешним PHP-файлом (search.php), а результаты публикуются на исходной странице (index.php) в виде деления.

Я уже собрал большую часть кода. Он отправляет форму одним щелчком мыши и отправляет ее в скрипт PHP.

Теперь мне нужно, чтобы результат из сценария PHP возвращался на исходную страницу (index.php).

Вот мой код:

function submit() {
    $(function() {
        var id = "id";
        var dataString = 'id=' + id;
        $.ajax({
            type: "POST",
            url: "inc/search.php",
            data: dataString,
            success: function() {
                goToByScroll("result");
                $('#result').html("<br><br><br><br><br><br><br><br><br><br><
                                   div class='center'><img src='img/loader.gif' /></div>").hide().fadeIn(2500, function() {
                $('#result').html("Finished");
                });
            }
        });
        return false;
    });
}

Мой PHP-файл (для тестирования):

<?php function safe($value)
{
    htmlentities($value, ENT_QUOTES, 'utf-8');
    return $value;
}
if (isset($_POST['id'])) {
    $id = safe($_POST['id']);
    echo ($id);
}
elseif (!isset($_POST['id'])) {
    header('Location: error?id=notfound');
} ?>

Я бы хотел, чтобы результаты из search.php (в данном случае "id") были опубликованы в #result, но я не могу понять, как: S

Ответы [ 2 ]

7 голосов
/ 15 апреля 2011

Я думаю, у вас есть почти все. Для функции обратного вызова, имеющейся у вас под success, нужен аргумент, который обозначает результаты от search.php

     success: function(res) {
             goToByScroll("result");
             $('#result').html("<br><br><br><br><br><br><br><br><br><br><div class='center'><img src='img/loader.gif' /></div>").hide().fadeIn(2500, function() {
                 $('#result').html(res + "<br /><br /> Finished");
             });
         } 

res все, что выводится, будет search.php. Эхо, вещи вне тегов php и т. Д. Все, что вы увидите, если загрузите search.php.

Я не знаю, хотите ли вы, чтобы "Закончено" все еще было там. Возьми его, если не умеешь.

2 голосов
/ 15 апреля 2011

Добавьте параметр к вашей функции успеха, например:

success: function(param) { ... }

Параметр - это строка, являющаяся ВСЕМ выходных данных сценария на стороне сервера.Вы можете установить его так, как хотите, и поместить в какой-то элемент

$("#element").html(param);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...