Отправка формы PHP jQuery Ajax — возвращает результаты на той же странице

#php #jquery #ajax #forms

#php #jquery #ajax #формы

Вопрос:

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

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

Я уже собрал большую часть кода. Он отправляет форму одним щелчком мыши и отправляет ее 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

Ответ №1:

Я думаю, у вас есть почти все. Функция обратного вызова, которая у вас есть под 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 . Echo, данные за пределами тегов php и т.д. Все, что вы бы увидели, если бы загрузили search.php само себя.

Я не знаю, хотели ли вы, чтобы ‘Finished’ все еще было там. Удалите это, если не хотите.

Комментарии:

1. Это работает на 100% 🙂 и самое приятное: мне просто пришлось скопировать и вставить это! Большое спасибо!

2. хах, я добавил только около шести символов к вашему, вы могли бы просто ввести их. рад, что это сработало

Ответ №2:

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

 success: function(param) { ... }
  

Параметр — это строка, которая представляет собой ВЕСЬ вывод вашего серверного скрипта. Вы можете установить для этого значение, каким хотите, и поместить его внутри какого-либо элемента

 $("#element").html(param);
  

Комментарии:

1. привет, наблюдатель, спасибо за ваш быстрый ответ и потраченное время! я только что включил свой тестовый скрипт php. не могли бы вы сообщить мне, что я должен добавить в приведенный выше пример, чтобы отобразить мои результаты на index.php ?

2. Все, что вы повторяете в своем php-скрипте на стороне сервера, будет установлено в переменную param в функции успеха. Просто повторите идентификатор, если он просто не найден echo("ID Not Found"); . Затем в функции успеха выполните: $("#results").html(param); и это должно сработать.

3. Большое спасибо, ребята! Я был почти у решения, когда jon_darkstar предложил, для меня, более простое решение! Спасибо, что уделили тебе время!!