Как я могу загрузить всю HTML-страницу с помощью jquery, включая новые функции jquery? - PullRequest
0 голосов
/ 18 июля 2011

У меня есть две проблемы, которые я пытаюсь решить.

  1. Во-первых, я пытаюсь настроить URL-адрес, чтобы он следовал схеме сканирования AJAX, как описано в Google: http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=174993 когда я загружаю свои две PHP-страницы для поиска, я в настоящее время просто звоню:

mysite / search_advanced.php mysite / mysite / search_basic.php

Я пытаюсь включить этиURL в:

mysite / #! / Search = advanced

mysite / #! / Search = basic

Мне нужна возможность напрямую вызывать эти URL и генерировать ихправильная страница.

  1. Моя вторая проблема заключается в том, что я не могу загрузить свои страницы в тег div, поскольку каждая страница поиска имеет свой собственный набор функций jquery для событий onclick.

Вот как я хотел бы загрузить свою страницу search_advanced в тег div с идентификатором main:

$('#search_advanced').click(function(e) {

    $('#main').load("search_advanced.php");

    return false;

});

Часть заголовка моей страницы search_advanced.php содержит следующее:

<?php session_start();
include_once('functions/dbconn.php');
include_once('functions/functions.php');
include_once('check.php'); 
check_login('3');

$profile = getProfile($_SESSION['uid']);

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $params = $_POST;
    if(isset($_POST['pg'])) {
    switch($_POST['pg']){
        case '10':
        $pg=10;
        break;
        case '25':
        $pg=25;
        break;
        case '50':
        $pg=50;
        break;
        default:
        $pg=10;
    }   
    }
}

function getPagination($start, $pg, $count) {
    $pager = "";
    $pages=(int)ceil($count/$pg);
    $current_page = (int)ceil(($start+1)/$pg);
    if($current_page > 1) {
        $prev_page= ($current_page-2)*$pg;
  $pager .= "<a href=\"#{$prev_page}\" class=\"pager\"><span class=\"prev\">Prev</span></a> ";
}
for ($i=1; $i<=$pages; $i++) {
    if($current_page == $i) {
    $pager .= '<strong>'.$i.'</strong> ';
    }
    else {
        $page_start = ($i-1)*$pg;
        $pager .= "<a href=\"#{$page_start}\" class=\"pager\"><span class=\"page_no\">".$i.'</span></a> ';
    }
}
if ($current_page < $pages) {
$next_page = ($current_page)*$pg;
$pager .= "<a href=\"#{$next_page}\" class=\"pager\"><span class=\"next\">Next</span></a> ";        
}
return $pager;
}

$title="Advanced Search";
$ready_script = <<<READY_SCRIPT
$(".country").change(function(){
var id=$(this).val();
var dataString = 'id='+ id;

$.ajax
({
  type: "GET",
  url: "ajax_region.php",
  data: dataString,
  cache: false,
  success: function(html){
    $("#state_id").html('<option value="-1">Any</option>'+html);
  }
});
});
$(".pager").click(function(){
   // my code here
});


$('#advanced_search').click(function(){
   // my code here
});
READY_SCRIPT;

В настоящее время моя переменная $ ready_script передается на мою страницу header.php, которая получаетВыполнено из этого:

$(document).ready(function() {
    <?php if (isset($ready_script)) {echo($ready_script);} ?>
}

Я хочу сейчас вызывать мой header.php только один раз и загружать все свои страницы в мой основной тег div, чтобы я не постоянно обращался к серверу с ненужными вызовами каждый раз.После моего события меню onclick есть ли лучший способ инициализировать мои функции jquery для конкретной страницы, которую я загружаю?

Любые мысли будут с благодарностью.

Спасибо, -Paul

1 Ответ

0 голосов
/ 18 июля 2011

Отделите ваш javascript от содержимого, поместив сценарии в файлы .js.После загрузки содержимого загрузите сценарии:

$('#main').load("search_advanced.php", function () {
    $.ajax({ url: "search_advanced.js", dataType: "jsonp" });
});

Если вы загружаете js одновременно с содержимым, ваши сценарии могут выполняться преждевременно.

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