У меня есть эта страница (A), в которой есть поле ввода, и как только вы отправляете ее, она выполняет вызов AJAX и отображает результаты. Теперь мне нужно поле поиска на другой странице (B), которое после его отправки перенаправляет вас на предыдущую страницу (A), и результаты отображаются так, как если бы вы делали это на первой странице (A).
Что было бы лучшим способом справиться с этим?
6 ответов
Я не уверен, почему вы должны иметь две отдельные страницы с этим поиском. Проще всего было бы просто перенаправить пользователя со страницы B на страницу A с уже заполненным поиском. Другими словами, страница B действительно ничего не делает:
<?php
/**
* Page B
*/
if(isset($_REQUEST['b_search'])) {
header("Location: a_search.php?a_search=$_REQUEST[b_search]");
}
echo //page content
?>
<?php
/**
* Page A
*/
$search = isset($_REQUEST['a_search']) ? $_REQUEST['a_search'] : null;
//handle request for non-JS users, I hope
echo //page content with search filled in
?>
/**
* JS
*/
document.ready = function () {
if (document.getElementById('search_field').value != null) {
//make ajax call
}
}
Я делаю это, используя ajax, jquery и json ...
На странице (A) вы делаете вызов ...
$('input[name="find"]').live('click',function(){ if($(this).val()){ $.getJSON('find.php?users=' + $(this).val(), function(data) { var rows= ""; $.each(data.users, function(i,user){ rows+= i % 2 ? '<tr class="flip">' : '<tr class="flop">'; ... rows+= '<td>' + user.id + '</td>'; rows+= '<td>' + user.name + '</td>'; rows+= '<td>' + user.score + '</td>'; rows+= '</tr>'; }); $('#list tbody').html(rows); } }); });
Страница find.php или страница (B)
<?php
$user = $_GET['users'] ;
// Search code by field ...
// Print de result in JSON format ...
?>
Вернуть данные JSON, как это ...
{
"action" : "find user",
"founds" : "2",
"users" : [
{
"id" : "33",
"name" : "Peter Park",
"score" : "343"
},
{
"id" : "1",
"name" : "Clark Kent",
"score" : "1200"
}
]
}
Страница (A), как это ...
<table id='list' >
<thead><tr><th>
Id</th><th>
Name</th><th>
Score</th></tr></thead>
<tbdoy>
</tbody>
</table>
<input type="text" name="find" value="Find User">
Вы могли бы заставить pageA.php
принять параметр запроса, содержащий ключевые слова поиска, и если этому параметру присвоено значение, показать результаты на основе этого значения. Результаты будут простым включением, чтобы их можно было повторно использовать как для запроса AJAX, так и для обычного запроса.
Используя единую логику (если время загрузки AJAX не имеет значения), вы можете сделать что-то вроде этого (или любой другой вариант):
<?php
$Term = (isset($_REQUEST['Term'])) ? $_REQUEST['Term'] : 'null';
// Optional default term
?>
<script>
function ajax(term){
if (term == null)
return false;
// ajax function for the search box
// probably fired onclick/onsubmit currently?
}
$(document).ready(function(){
ajax(<?=$Term?>);
});
</script>
В качестве альтернативы вы можете file_get_contents ("ajax_request.php? Param = $ PostValue") обработчик ajax и выводить его без вызова ajax onload.
Так ты хочешь этот Аякс?
Чтобы сделать это с Ajax, я рекомендую вам создать страницу ajax.php, все, что он делает, это принимает запрос и выкладывает результат.
ajax.php?query=foo
А затем вывести результат в список или что-то ...
Затем используйте JavaScript для отображения ...
Но это только если вы хотите использовать ajax.
Есть один метод, который выполняет функции поиска. Этот метод может быть вызван двумя способами. 1. Использование Ajax. 2. Использование параметров URL.
Когда вы вызываете страницу A со страницы B, вы передаете поисковый запрос в виде URL-параметров ... поэтому поиск завершен, и страница отображается с результатами.
При поиске на странице A .. вызывается метод ajax и возвращаются данные json / xml.
По сути, ваша страница просто должна включать обе логики!
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.