2016-11-25 11 views
0

「このようなページはありません!」いつでも私はボタンを使って内容を変更しようとしています。
ここでindex.htmlを次のとおりです。AJAX/PHP/JS - ページコンテンツをコンテナに読み込めません。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>eWorld</title> 
<link rel="stylesheet" type="text/css" href="/css/style.css" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" src="js/script.js"></script> 

</head> 

<body> 

<div id="rounded"> 
<div id="main" class="container"> 
<h1>eWORLD</h1> 
<h2>You make difference.</h2> 

<ul id="navigation"> 
<li><a href="#forum">Forum</a></li> 
<li><a href="#about">About</a></li> 
<li><a href="#register">Register</a></li> 
<li><a href="#login" target=pageContent>Login</a></li> 
<li><img id="loading" src="img/ajax_load.gif" alt="loading" /></li> 
</ul> 
</div> 
<div class="clear"></div> 
</div> 
<div class="clear"></div> 
<div id="pageContent"> 
</div> 
<div class="clear"></div></div> 
<div align="center" class="#footer">eWorld</div> 

</body> 
</html> 

script.js

var default_content=""; 
$(document).ready(function(){ 

checkURL(); 
$('ul li a').click(function (e){ 

     checkURL(this.hash); 

}); 

default_content = $('#pageContent').html(); 


setInterval("checkURL()",250); 

}); 

var lasturl=""; 

function checkURL(hash) 
{ 
if(!hash) hash=window.location.hash; 

if(hash != lasturl) 
{ 
    lasturl=hash; 

    if(hash=="") 
    $('#pageContent').html(default_content); 

    else 
    loadPage(hash); 
} 
} 


function loadPage(url) 
{ 
url=url.replace('#page',''); 

$('#loading').css('visibility','visible'); 

$.ajax({ 
    type: "POST", 
    url: "load_page.php", 
    data: 'page='+url, 
    dataType: "html", 
    success: function(msg){ 

     if(parseInt(msg)!=0) 
     { 
      $('#pageContent').html(msg); 
      $('#loading').css('visibility','hidden'); 
     } 
    } 

}); 

} 

はまた、load_page.php

<?php 
if(!$_POST['page']) die("0"); 

$page = $_POST['page']; 

$newstr = str_replace("#","", $page); 

if (!file_exists('pages/'.$newstr.'.html')) 
echo file_get_contents('pages/'.$newstr.'.html'); 

else echo 'There is no such page!'; 
?> 

それは、 scripのようだtはうまくいっていますが、何とか新しいページのディレクトリに入ることができませんでした(これは/pages/forum.htmlです。 /pages/login.htmlなど)。私はミスを犯してきたところ、誰かが私を見ることができれば あなたはDOM要素の.hashを取得しようとしている... :)

+2

「ファイルが存在しない場合は**存在します」という意味のif(!file_exists(...))は意味しませんか? – Pointy

+0

Pointy、あなたはポイントを持っている!問題は解決しました、ありがとう! –

答えて

1

感謝される:

$('ul li a').click(function (e){ 
    checkURL(this.hash); 

代わりに、href属性を取得:

checkURL(this.attr("href")); 

.hashはURLオブジェクトも

、checkURL(この最初の使用)上で動作します。 documentReadyがメソッド定義と一致しないのでエラーをスローする必要があります

+0

これで、this.attrが関数として認識されず、次のようなエラーが発生します。TypeError:this.attrは関数ではありません –

+0

checkURL($(this).attr( 'href')) - attr is jquery関数であるため、jqueryセレクタが必要な場合があります。申し訳ありませんが、JS内部の作業で少し錆びた – Auris

+0

ありがとうございます、それはコンソールがクリアされているので、今はエラーはなく、まだ 'そのようなページはありません。 tho、私はload_page.phpが有効なリンクを作成しているのだろうかと思っていますが、これは問題かもしれませんが、私はこの問題の原因を認識できません。 –

0

解決策は、AurisとPointyの両方で説明されています。まず第一に、href属性を取得すると、コンソールで処理されたエラーが解決されました。また、!file_existsは、Pointyが言ったように、 "ファイルが存在しない場合"を意味していました。今は完璧に機能しているすべて、サポートありがとう!

関連する問題