2014-11-20 5 views
0

У меня есть скрипт, который загружает несколько страниц (просмотры/home.php, просмотры/about.php, просмотры/contact.php и т.д.):AJAX и PHP включают

$(document).ready(function() { 

$('#content').load('views/home.php'); 

$('ul#nav li a').click(function(e) { 

var pageq = $(this).attr('href'); 
$('#content').load('views/' + pageq + '.php'); 

document.title = $(this).attr('rel'); 

//to get the ajax content and display in div with id 'content' 
$.ajax({ 
url:'views/'+pageq+'.php', 
success: function(data){ 
$('#content').html(data); 
} 
}); 

//to change the browser URL to 'pageq' 
if(pageq!=window.location){ 
window.history.pushState({path:pageq},'',pageq); 
} 

return false; 

}); 

}); 

Но он работает только с HTML, напр. <h1>Home</h1>.

Теперь я бы добавил некоторые переменные на эти страницы. Например, в setup.php есть переменная $ page. Как отобразить <h1>$page['title']</h1>?

Я пробовал с include('config/setup.php');, но он не работает.

Я также пробовал это в моем .js файле: $.get('config/setup.php', { x : y });, но я не знаю, как передать эти переменные и какой лучший подход.

EDIT - навигация:

<?php 

try{ 
$pdo = new PDO("mysql:host=localhost;dbname=mysite", 'root','root'); 
} 

catch(PDOException $e) { 
echo $e->getMessage(); 
} 

$sql = "SELECT * FROM posts ORDER BY id"; 
$stmt = $pdo->prepare($sql); 
$stmt->execute(); 

?> 

<ul class="nav navbar-nav" id="nav"> 

<?php 
while ($row = $stmt->fetch(PDO::FETCH_OBJ)) { 
    $sub_sql = "SELECT * FROM submenu WHERE cat_id=:id"; 
    $sub_stmt = $pdo->prepare($sub_sql); 
    $sub_stmt->bindParam(':id',$row->id,PDO::PARAM_INT); 
    $sub_stmt->execute(); 

    ?> 
    <li class="dropdown <?php selected($path['call_parts'][0], $row->slug, 'active') ?>"><a href="<?php echo $row->slug; ?>" rel="<?php echo $row->title; ?>"><?php echo $row->title; ?></a> 
    <?php 
    if($sub_stmt->rowCount()) { 
     ?> 
     <ul class="dropdown-menu" role="menu"> 
     <?php 

     while ($sub_row = $sub_stmt->fetch(PDO::FETCH_OBJ)) { 
      ?> 
      <li><a href="<?php echo $sub_row->href; ?>"><?php echo $sub_row->sub_name; ?></a></li> 
      <?php 
      } 

     ?> 
     </ul> 
     <?php 
     } 
    ?> 
    </li> 
    <?php 
    } 
?> 

</ul> 
+0

Что делать, если у вас есть 'включить ('Config/setup.php'); 'в ваших файлах просмотра? Вот как это будет работать, вы не будете называть файл установки через javascript. – slapyo

+0

Таким образом, нет возможности загружать динамический контент без обновления страниц? Я всегда получаю один из них: 1) только статический контент и обновление страницы; или 2) динамический контент и обновление страницы. Я хочу: 3) динамический контент, без обновления :) EDIT: я мог бы также выполнять db-запрос на каждой странице отдельно, чтобы получить контент из db. Но это единственный способ? – Tompo

ответ

0

убедитесь, что у вас есть "JSON" в своем заявлении Ajax JQuery

php: 
$myVar = $_POST['myVar']; 
echo json_encode(array("var_1"=>$var1, "var_2"=>$var2)); 


javascript: 
var myVar = 'xyz'; 
$.post('config/setup.php', { myVar:myVar }, function(data) { 

     var var_1 = data.var_1, 
      var_2 = data.var_2; //<< matches w/ php above 

}, "json"); 
+0

Он работает, только если обновить страницу. В этом весь смысл. Что бы я ни пытался, я всегда получаю один из них: 1) только статический контент и обновление страницы; или 2) динамический контент и обновление страницы. Я хочу: 3) динамический контент, без обновления :) – Tompo

+0

EDIT: Я мог бы также выполнять db-запрос на каждой странице отдельно, чтобы получить контент из db. Но это единственный способ? – Tompo

+0

IM, не понимая, чего вы ожидаете. –

Смежные вопросы