#php #jquery #post #hash
#php #jquery #Публикация #хэш
Вопрос:
Наконец, я нахожу какую-то статью в http://code.google.com/intl/en/web/ajaxcrawling/docs/getting-started.html msnbc использует этот метод. Спасибо за всех друзей.
Спасибо за вашу помощь. Я изучу это для себя:-}
Сегодня я снова обновил свой вопрос, удалив весь свой код. Возможно, я все неправильно думаю.
Я хочу создать страницу показа продуктов.
Один есть index.php
, другой есть search.php
(как страница окна jquery). index.php
содержит несколько списков категорий продуктов; каждый щелчок по элементу каталога продуктов будет передавать каждое значение в search.php
. search.php
создаст запрос mysql и просмотрит сведения о продуктах. В нем ( search.php
) также есть окно поиска. ( search.php
можно перевернуть страницу, чтобы показать несколько продуктов; результат поиска похож на галерею jQuery …).
Мне нужно что-либо сделать в, search.php
но без обновления index.php
.
Я перепробовал много методов, пока думал: Сделать search.php как iframe (но не могу судить search.php высота при переворачивании страницы и index.php без обновления); используйте jquery ajax / json для передачи значения из index.php для search.php , затем возвращает все значения страницы в index.php . (все еще встречались некоторые проблемы с правилом URL. php зависит от передаваемых значений URL в search.php
, но если значение изменится, две страницы обновят все. )
итак. Я думаю, спрашиваю, нахожу, пытаюсь… Случайно я нахожу сайт, подобный моему запросу.
в этом URL измените слово поиска после =, обновится только страница окна
в этом URL измените слово поиска после = страница обновится
Я кое-что нашел в ее исходном коде, это ключевые правила?
<script type="text/javascript">
var fastReplace = function() {
var href = document.location.href;
var siteUrl = window.location.port ? window.location.protocol '//' window.location.hostname ':' window.location.port : window.location.protocol '//' window.location.hostname;
var delimiter = href.indexOf('#!') !== -1 ? '#!wallState=' : '#wallState=';
var pieces = href.split(delimiter);
if ( pieces[1] ) {
var pieces2 = pieces[1].split('__');
if ( pieces2[1] amp;amp; pieces2[1].length > 1) {
window.location.replace( unescape(pieces2[1].replace(/ /g, " ")));
}
}
}();
</script>
Если это так. в моем состоянии. одна страница — это index.php . другой search.php.
Как с помощью js создать URL поиска, подобный
index.php#search.php?word=XXXamp;page=XXX
тогда как передать значение от одного к другому и избежать обновления index.php ?
Все еще ждем помощи, ждем только какого-нибудь простого рабочего кода js, pass value get value
.
Спасибо всем.
Комментарии:
1. я действительно не понял. Вы хотите переписать URL в адресной строке? все, что находится за хэш-меткой (#), может видеть только клиент…
2. @helle, ты думаешь, это просто переписывание URL? Меня это не волнует. Я забочусь об эффекте. пожалуйста, перейдите на
http://powerwall.msnbc.msn.com/
, щелкните каждую фотографию, откройте страницу окна. сделайте что-нибудь на странице окна, попробуйте поискать что-нибудь в bing вверху. главная страница не будет обновляться, но страница окна может перевернуть страницу, изменить URL. Как это сделать? это похоже на то, что мне нужно. у вас есть какие-либо идеи? Спасибо.3. технически, плагин jquery захватывает все, что находится там после wallState, на самом деле это не post или get, поскольку нет запроса к серверу
Ответ №1:
Я прочитал вашу проблему, хотя я не могу написать для вас полный код (нехватка времени), поэтому я могу предложить вам, что делать для вашей наилучшей практики
используйте dataType ='json'
в функции jQuery.ajax и
напишите json_encode() на B.php
и json_decode() на A.php или $.getJSON()
Альтернативный:
Прочитайте jQuery.load()
Комментарии:
1. @diEcho, большое спасибо. Я прочитал руководство и попробовал использовать json для передачи данных. Но все еще возникают некоторые проблемы. Когда я выполняю поиск или переворачиваю страницу на странице B, страница A также обновляется. Я нахожу страницу, похожую на то, что я хочу. Смотрите часть моего вопроса об обновлении. Я замечаю его правило URL: страница b записывается после
url anchor
, чтобы включить страницу B, а не обновлять страницу A. Вы знаете, как это сделать?2. @yuli не могли бы вы, пожалуйста, вставить код обеих страниц на ideone.com или codepad.org , чтобы я мог изучить и предложить вам решение. Также , пожалуйста , поддержите это , если это полезный пост . Спасибо 🙂
3. @diEcho, я поднял голос 2 дня назад. И если вы могли бы помочь мне решить эту проблему, я также с удовольствием дам вам 200 вознаграждений. Но есть проблема. у меня
page b
есть поиск в mysql, если я вставлю код вideone.com
илиcodepad.org
, как подключиться к базе данных? Если нет, то это сложно проверить. Еще раз спасибо.4. подключение не требуется. я просто посмотрю ваш код .. всякий раз, когда вы получаете mysql, создайте массив на b.php.вот и все 🙂
5. @yuli, я не видел вашу часть обновления, а также нет кода для страницы A и страницы B, пожалуйста, предоставьте мне. пожалуйста, объясните шаг за шагом, что происходит в данный момент и чего именно вы хотите.
Ответ №2:
предполагая, что вы действительно хотите сделать что-то вроде здесь: http://powerwall.msnbc.msn.com /
Я предполагаю, что они используют комбинацию ajax-запросов и что-то вроде этого:http://tkyk.github.com/jquery-history-plugin /
убедитесь, что навигация (все ссылки и т.д.) В окне Работает через ajax — проверьте все ссылки и предоставьте им новую функциональность с помощью js. вы можете написать некоторую функцию, которая запрашивает URL-адрес href через ajax, а затем заменить содержимое вашего окна. …
function change_box_links(output_area){
output_area.find('a').each(function(){
$(this).bind('click', function(e){
e.preventDefault();
var url = $(this).attr('href');
$.ajax({
url: url,
success: function(data){
output_area.html(data);
//update url in addressbar
change_box_links(output_area);
}
});
});
});
}
ее можно обновить, но оболочка показывает основную идею…
дополнение[2011-05-15]
Перестаньте думать, что у вас будет два файла, которые могут обрабатывать несколько «ящиков». я имею в виду, что вы можете это сделать, но оно того стоит.
но чтобы иметь возможность настроить ваши шаблоны как обычную html-страницу, вы могли бы использовать приведенный выше скрипт для анализа html-страниц, запрошенных ajax.
создайте свои html-страницы для
- просмотр содержимого,
- просмотр результата поиска
- и т.д.
на вашей главной странице вы должны предоставить некоторое «окно», где вы можете отобразить то, что вам нужно. я рекомендую div
:
<div id="yourbox"></div>
на вашей главной странице есть кнопки для отображения этого окна с другим содержимым, как на странице примера, которую вы нам показали. если вы нажмете на один из них, JS создаст ajax-вызов на нужную страницу:
(здесь с помощью jquery)
$('#showsearch_button').bind('click', function(){showsearch();});
function show_search() {
$.ajax({
url: 'search.php',
success: function(data){
var output_area = $('#yourbox');
output_area.html(data);
$.address.hash('search');
change_box_links(output_area);
}
});
});
для других кнопок у вас будут аналогичные функции.
первая функция (см. Выше) обеспечивает, что запрошенное содержимое окна может быть записано как обычная HTML-страница (так что вы также можете вызвать ее как автономную). вот его обновление, в котором также указаны изменения URL хэштега:
jquery и требует плагинаhistory-
function change_box_links(output_area){
output_area.find('a').each(function(){
$(this).bind('click', function(e){
e.preventDefault();
var url = $(this).attr('href');
$.ajax({
url: url,
success: function(data){
output_area.html(data);
var name = url.replace('/.php/','');
$.address.hash(name);
change_box_links(output_area);
}
});
});
});
}
и вам понадобится какая-то такая функция, которая будет привязывать кнопки «Назад» и «Вперед» вашего браузера:
$.address.change(function(event) {
var name = $.address.hash();
switch(name){
case 'search': show_search(); break;
default: alert("page not found: " name);
}
});
приведенный выше код должен дать представление о том, как вы можете решить свою проблему. вам придется быть очень внимательным к именам файлов, если вы просто скопируете и пропустите это. опять же: это можно улучшить, но оболочка покажет вам трюк 😉
Комментарии:
1. @helle, так как же поступить
search.php
? если искать больше вsearch.php
, зависит ли значение поиска nessassery pass от URL? таким образом, обе страницы будут обновлены. Спасибо.2. если вы выполните вызов ajax, вы можете передать post и получить переменные. api.jquery.com/jQuery.ajax
3. @helle, я не уверен, как написать ajax на этих двух страницах, чтобы выполнять поиск чего-либо в
search.php
иindex.php
без обновления. Я пробовалjqeury.post
,jquery.json
и дажеjquery.load
(загрузить search.php в div из index.php ). Но когда я делаю что-то другое вsearch.php
(разбивка результатов поиска на страницы), две страницы обновятся. Итак, вы можете дать мне какой-нибудь простой обработанный код? Большое спасибо.4. вам нужно будет преобразовать все ваши данные в вызовы ajax. Я не вижу другого способа…
5. @helle, это сложный вопрос. Я слаб в чистом ajax. Просто немного изучите jquery.ajax. итак, можете ли вы проинструктировать меня подробнее? Еще раз спасибо.
Ответ №3:
я не уверен, что я полностью понял, чего вы хотите, но поправьте меня, если я этого не сделал,
я думаю, вам нужно что-то вроде выпадающего списка, чтобы, как только пользователь выбирает один элемент, какой-нибудь div внутри вашей страницы показывал результат другой страницы. результат..
если это так, вы можете сделать это с помощью jquery .load () и вот пример (нет необходимости в json)
Шаг 1:
Index.php
<p>
brand:<select id=jquerybrand>$jquerybrands</select><br />
Model:<select id=jquerycars></select><br />
</p>
<script type="text/javascript">
$(document).ready(function(){
$('#jquerybrand').change(function(){
var value=$(this).value;
var url='api/quick.php?' this.id '=' this.value ' option';
$('#jquerycars').load(url);
});
});
</script>
Это просто покажет 2 поля dowpdown (может быть текст или что угодно, что вам нравится). и добавит прослушиватель к любому изменению значения. после изменения он отправит идентификатор поля и новое значение в api/quick.php , затем quick.php ответ будет загружен в выпадающий список #jquerycars.
Шаг 2 quick.php
if(isset($_GET['jquerybrand'])){
$jquerycars="";
require_once("../lib/database.php");
$sql_db = new database();
$l=$sql_db->Item_in_table("car","sheet1","WHERE `brand`='$jquerybrand';");
foreach($l as $l)$jquerycars .="<option>$l</option>";
echo $jquerycars;//response that will replace the old #jquerycars
}
это подтвердит, что это запрос только на получение результата запроса, затем он выполнит запрос и отобразит результаты.
теперь, как только результаты вернутся, они заменят старые 🙂
надеюсь, это поможет :).
Комментарии:
1. @Momen M El Zalabany, спасибо за ваш ответ. Извините, что я не могу четко объяснить свою очередь на английском. итак, у меня уходит несколько дней, наконец я нахожу какой-нибудь сайт, подобный моему запросу.
http://powerwall.msnbc.msn.com/
. вы можете попробовать там. (на главной странице у него много картинок, но я заменяю их на множество ссылок word).click each link
, откройте страницу окна. (возможно, на этом шаге он использует страницу статистики, но я использую запрос mysql, запрашиваю все такого рода продукты)Then make anything in box page, the main page without refresh
. Следующая функция, мы оба похожи. на странице окна также есть функция поиска. посмотрите на его верхнюю часть.2. что ж, powerwall.msnbc работает точно так, как я вам показал .. он загружает содержимое после нажатия в скрытый div, а затем показывает его и анимирует перемещение других фотографий .. я могу показать вам полный код, если вы примете это как решение
3. pndmasr.com/find.php вот пример, который я написал на этом автомобильном веб-сайте (все еще в стадии разработки, но вы можете увидеть концепцию.)
4. @Momen M El Zalabany, спасибо, я вижу ваши демонстрации. Я заметил, но ваш поиск все равно обновит всю страницу. но
msnbc
нет, попробуйте поиск bing вверху. И мне нужен эффект, подобныйmsnbc
.5. да, это мое, но все еще требуется обширная работа над дизайном :). спасибо за клики: D, если вы нажмете на название автомобиля, он загрузит информацию об автомобиле в правой части без обновления, если вы хотите, я могу настроить для вас код, чтобы он делал то же самое, что и msn. web