如何使用包含新jquery函数的jquery加载整个html页面?

时间:2011-07-17 21:23:40

标签: php jquery ajax load

我有两个问题,我正在努力工作。

  1. 第一个是我正在设置网址以遵循Google描述的AJAX抓取方案:http://www.google.com/support/webmasters/bin/answer.py?hl=en&answer=174993 当我加载我的两个PHP页面进行搜索时,我现在只需要调用:
  2. mysite的/ search_advanced.php mysite的/ mysite的/ search_basic.php

    我正在尝试将这些网址转换为:

    mysite的/#!/搜索=先进

    mysite的/#!/搜索=基本

    我需要能够直接调用这些URL并让它们生成正确的页面。

    1. 我的第二个问题是我无法将我的页面加载到div标签中,因为每个搜索页面都有自己的一组jquery函数用于onclick事件。
    2. 以下是我想将search_advanced页面加载到id为main的div标记中的方法:

      $('#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 :(得分:0)

将脚本放入.js文件中,将您的javascript与内容分开。加载内容后,加载脚本:

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

如果您在内容的同时加载js,您的脚本可能会过早运行。