2011-07-17 32 views
0

我有兩個問題,我嘗試工作。如何使用jquery加載整個html頁面,包括新的jquery函數?

  1. 首先是我想通過谷歌描述設置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,並讓他們產生正確的頁面的能力。

  1. 我的第二個問題是我無法將我的頁面加載到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的功能?

任何想法將不勝感激。

感謝, - 保羅

+0

這似乎是一個AJAX不適合的技術。如果您需要用新內容替換頁面上的所有內容(包括腳本),只需加載新頁面即可。不要爲此使用AJAX。重點是什麼? – gilly3

+0

這是我過去的做法,但是我已經替換了我的主菜單,它現在從數據庫中檢索配置文件映像等,因此每次新頁面加載後,每次調用我的數據庫時都會調用這個新的頭文件。似乎必須有更好的方法。 – Paul

回答

0

分開你的JavaScript從您的內容通過將腳本轉換爲.js文件。您加載內容後,加載腳本:

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

如果你在同一時間與內容加載JS,你的腳本可能會過早地運行。

+0

任何ieda爲什麼這不是在IE中加載?它似乎在Chrome和FF中都能正常工作。 – Paul

+0

我發現我的問題與IE瀏覽器。它被錯誤地格式化了兩個額外的閉合div標籤。 – Paul

相關問題