2016-07-21 56 views
0

我做了一个ajax函数,它在我的index.php中的ajax-container div内调用我的html页面,所以现在我怎么做,如果我也想调用php页面在Ajax?用Ajax调用html和php页面

有我的代码:

htaccess的重写

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^([a-zA-Z0-9\-]*).html$ index.php?p=$1 [L] 

的index.php

<div class="link" href="page2.html">go html</div> 
 
<div class="link" href="page3.php">go php</div> 
 

 
<div id="ajax-container"> 
 
     <?php 
 
$d = "pages/"; 
 

 
if (isset($_GET['p'])) 
 
\t { 
 
\t $p = strtolower($_GET['p']); 
 
\t if (preg_match("/^[a-z0-9\-]+$/", $p) && file_exists($d . $p . ".html")) 
 
\t \t { 
 
\t \t include $d . $p . ".html"; 
 

 
\t \t } 
 
\t else 
 
\t \t { 
 
\t \t include $d . "404.html"; 
 

 
\t \t } 
 
\t } 
 
    else 
 
\t { 
 
\t include $d . "home.html"; 
 

 
\t } ?> 
 
</div>

这是我AJAX功能调用从文件夹中的网页HTML页/

var afficher = function(data, page) { 
 

 
    $('#ajax-container').fadeOut(100, function() { 
 
     $('#ajax-container').empty(); 
 
     $('#ajax-container').append(data); 
 
     $('#ajax-container').fadeIn(100, function() {}); 
 
    }); 
 
}; 
 

 
var lastRequest = null; 
 
if (lastRequest !== null) { 
 
    lastRequest.abort(); 
 
} 
 

 
var loadPage = function(page, storeHistory) { 
 
    if (typeof storeHistory === 'undefined') { 
 
     storeHistory = true; 
 
    } 
 

 

 
    lastRequest = $.ajax({ 
 
     url: 'pages/' + page, 
 
     cache: false, 
 
     success: function(html) { 
 
      afficher(html, page); 
 
      if (storeHistory === true) { 
 
       history.pushState({ 
 
        'key': 'value', 
 
        'url': page 
 
       }, '', page); 
 
      } 
 
     }, 
 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
 
      afficher('erreur lors du chagement de la page'); 
 
     } 
 
    }); 
 

 
    return false; 
 
}; 
 

 
window.addEventListener('load', function() { 
 
    setTimeout(function() { 
 
     window.addEventListener('popstate', function(e) { 
 
      if (e.state === null) { 
 
       loadPage('home.html'); 
 
      } else { 
 
       loadPage(e['state']['url'], false); 
 
      } 
 
     }); 
 
    }, 0); 
 
}); 
 

 
$(document).ready(function() { 
 
    
 
    $('.link').bind('click', function(e) { 
 
    e.preventDefault(); 
 
    var page = $(this).attr('href'); 
 
    loadPage(page); 
 
    return false; 
 
    }); 
 
    
 
});

回答

1

如果要执行PHP,并显示它返回什么你可以使用jQuery和AJAX一个div:

$(function(){ 
    $(".myDivClass").load('yourPHPFile.php'); 
}()); 
+0

谢谢你的工作,但我怎样才能使用它为我的popstate功能? – Tiaw

+0

把它放在'loadPage('home.html');'在你的代码中应该可以工作。那就是如果我明白你的问题:P。不要忘了提出答案,并将其标记为答案,如果这样做的话:D @Tiaw –