我有兩個問題,我嘗試工作。如何使用jquery加載整個html頁面,包括新的jquery函數?
- 首先是我想通過谷歌描述設置URL跟隨AJAX抓取方案:http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=174993 當我載入我的兩個PHP網頁搜索我現在只要致電:
mysite的/ search_advanced.php 的mysite/mysite的/ search_basic.php
我試圖把這些網址爲:
的mysite /#/搜索=先進
的mysite /#!/搜索=基本
我需要直接調用這些URL,並讓他們產生正確的頁面的能力。
- 我的第二個問題是我無法將我的頁面加載到div標記,因爲每個搜索頁面都有自己的一組用於onclick事件的jquery函數。
這裏是我想我search_advanced頁面加載到一個div標籤的主要一個id:
$('#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的功能?
任何想法將不勝感激。
感謝, - 保羅
這似乎是一個AJAX不適合的技術。如果您需要用新內容替換頁面上的所有內容(包括腳本),只需加載新頁面即可。不要爲此使用AJAX。重點是什麼? – gilly3
這是我過去的做法,但是我已經替換了我的主菜單,它現在從數據庫中檢索配置文件映像等,因此每次新頁面加載後,每次調用我的數據庫時都會調用這個新的頭文件。似乎必須有更好的方法。 – Paul