PHP публикует и получает значение на странице окна jQuery, обновляет страницу как `msnbc.com `

#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