PHP опубликовать и получить значение на странице коробки jQuery, обновить страницу как `msnbc.com` - PullRequest
3 голосов
/ 07 мая 2011

Наконец, я нахожу статью в http://code.google.com/intl/en/web/ajaxcrawling/docs/getting-started.html msnbc, использующей этот метод. Спасибо за всех друзей.

Спасибо за вашу помощь. Я буду изучать это для себя: -}

Сегодня я снова обновил свой вопрос, удалите весь мой код. Может быть, мои мысли все неправильно.

Я хочу сделать страницу выставки товаров.

Один - index.php, другой - search.php (в виде страницы jquery box). 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, изменить слово для поиска после% 3D, только обновление страницы окна

в этом 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] && pieces2[1].length > 1) {
            window.location.replace( unescape(pieces2[1].replace(/\+/g, " ")));
        }
    }
}();
</script> 

Если так. в моем состоянии. одна страница является index.php. другой это search.php. Как использовать JS сделать URL-адрес поиска, как

index.php#search.php?word=XXX&page=XXX

тогда как передать значение от одного к другому и избежать обновления index.php?

Все еще жду помощи, жду простого рабочего кода, только js, pass value get value.

Спасибо всем.

Ответы [ 3 ]

2 голосов
/ 09 мая 2011

Я прочитал вашу проблему, хотя я не могу написать полный код для вас (нехватка времени), поэтому я могу предложить вам, что делать для вашей лучшей практики

использовать dataType ='json' в Функция jQuery.ajax и
запись json_encode () в B.php
и json_decode () в A.php или $. getJSON ()

Альтернатива:

Чтение jQuery.load ()

0 голосов
/ 13 мая 2011

при условии, что вы действительно хотите сделать что-то вроде этого: http://powerwall.msnbc.msn.com/

Я предполагаю, что они используют комбинацию ajax-запросов и что-то вроде этого: http://tkyk.github.com/jquery-history-plugin/

убедитесь, чтоНавигация (все ссылки и т. д.) в окне работает через ajax - проверьте все ссылки и предоставьте им новую функциональность с помощью js.Вы можете написать некоторую функцию, которая запрашивает href url через 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-страницы, вы можете использовать вышеописанный скрипт для анализа hjml-страниц, запрошенных 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 и требует плагин истории

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);
    }
});

приведенный выше код должен дать представление о том, как вы можете решить вашу проблему.вам нужно быть очень последовательным с именами файлов, если вы просто скопируете и пропустите это.еще раз: это поправимо, но оболочка покажет вам хитрость; -)

0 голосов
/ 12 мая 2011

я не уверен, что я полностью понял, что вы хотите, но поправьте меня, если я этого не сделал,

Я думаю, вам нужно что-то вроде выпадающего списка, когда пользователь выбирает один элемент, какой-то 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 поля вниз (может быть текст или что угодно).и добавит слушателя к любому изменению в значении.после изменения он отправит идентификатор поля и новое значение в 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
}

это подтвердит, что это запрос только для получения результата запроса, затем выполнит запрос и отобразит результаты.теперь, когда результаты вернутся, он заменит старое:)

надеюсь, это поможет:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...