2011-04-20 66 views
0

我已經搜索過,看看有沒有類似的帖子,如果有人發現對重複抱歉。jQuery從PHP加載數據,但隨後消失,爲什麼?

所以我的困境是:

考慮下面的代碼,爲什麼我回來的數據加載,然後消失?

CSS

#contentbg{ 
    background-image: url(../images/jp_01.jpg); 
    background-repeat: no-repeat; 
    background-position: top; 
    position: absolute; 
    width: 755px; 
    height: 629px; 
} 

#content{ 
    position: relative; 
} 

JS

function getHome(){ 
    $.post("php/functions.php?s=home", 
    function(data) { 
    $('#content').html(data); 
    }); 
}; 

HTML

<div id="contentbg"> 
    <div id="content"></div> 
</div> 
<ul id="navlist"> 
    <li id="home"><a href="index.php" onClick="getHome();" title="Home"></a></li> 
</ul> 

PHP

function displayHome($home){ 
    if(isset($home)){ 
     $home = '<img src="images/home.jpg" alt="Home" width="755" height="630" />'; 
     return $home; 
    } 
} 

if (isset($_GET['s'])) { 
    switch ($_GET['s']) { 
     case "home": 
      echo displayHome($_GET['s']); 
      break; 
     } 
} 

我知道,如果我改變了JS如下所示的數據被加載:

function getHome(){ 
    $.post("php/functions.php?s=home", 
    function(html) { 
    alert("Data Loaded: " + html); 
    }); 
}; 
+3

爲什麼在您不發送任何POST數據廣告時使用POST顯然也不會對您的請求進行任何修改? – ThiefMaster 2011-04-20 13:45:42

+0

如上所述,您可以使用javascript注入此項。 – 2011-04-20 13:47:52

+0

一切似乎都沒問題。 Firebug展示了什麼? PHP代碼是否正確響應? – galymzhan 2011-04-20 13:50:36

回答

2

問題是,當你點擊鏈接時,你並沒有取消標準動作,所以發生了什麼是你點擊,javascript被執行,然後index.php被加載。

您需要從您的getHome函數中返回false來解決這個問題。

function getHome(){ 
    $.post("php/functions.php?s=home", 
    function(data) { 
    $('#content').html(data); 
    }); 
    return false; 
} 

當你正在使用jQuery已經,你也可以擺脫JavaScript和使用的功能等內嵌的:

$("#home a").click(function(event) { 
    event.preventDefault(); 
    $.post("php/functions.php?s=home", 
    function(data) { 
    $('#content').html(data); 
    }); 
); 

這保證以及該標準的事件(鏈接的點擊)被第一行取消。

+0

我嘗試了'返回false';'但沒有工作 – ricbax 2011-04-20 13:59:26

+0

@ricbax奇怪的是,它應該,但是因爲您使用的是jquery,我添加的第二個解決方案無論如何都是更好的(您可以從html中刪除javascript)。 – jeroen 2011-04-20 14:05:28

+1

一旦你點擊鏈接,你的頁面是否會刷新? – 2011-04-20 14:06:08

1

我看不出有任何項目與您的HTML標識#content,你確定它存在?

+0

對不起,我忘了在我的文章中添加那個重要的細節 – ricbax 2011-04-20 13:55:26

+0

你能更新你的文章嗎?否則,你能提供一個鏈接到你的網頁? – 2011-04-20 14:04:05

+0

嘗試暫時移動'#contentbg'之外的'#content' div並查看是否得到任何結果。我不太確定爲什麼那些首先是獨立的div。 – 2011-04-20 14:12:50

1

我假設#內容在你的HTML結構中定義:

$('#content').load('php/functions.php?s=home'); 

也可以嘗試,現在除去#content { position: relative; },只是櫃面內容是「跳」一次加載到文檔

0

好像有沒有「內容」div在你的HTML。
此外,使用

$("#content").load("url"); 

因爲世界上沒有必要使用.post的$因爲不發送POST數據。

相關問題