2011-04-14 71 views
1

我正在創建一個PHP應用程序,並且正在使用JQuery,但遇到了問題。例如,下面是我正在編寫的頁面的代碼,alert()函數在頁面加載時調用,但第二個javascript jquery代碼沒有,我看不出爲什麼一行可行,但第二行不行?如何使用JQuery和PHP?

help.php

<?php 
    echo "<script>"; 
     echo "alert(\"Loaded\");"; 
     echo "$(\"#newDiv\").draggable().resizable();"; 
    echo "</script>"; 
    echo "<div id=\"newDiv\">"; 
    echo "</div>"; 
?> 

的頁面調用報警,並創建DIV,但不執行的jQuery語句。

我認爲這可能是由於我的網頁是結構和加載。頁面使用jQuery和AJAX所以唯一頁面的用戶實際上是 「負載」 一個div裏面裝的是index.php頁面,如下所示:

的index.php

<html> 
<head> 
    <title>BluePrintr Web Application.</title> 
    <link rel="stylesheet" type="text/css" href="public.css" /> 
    <script type="text/javascript" language="javascript" src="jquery.js"></script> 
    <script type="text/javascript" language="javascript" src="myLibs.js"></script> 
</head> 
<body> 
<?php 
    echo "<div id=\"web_Page\">"; 
     ////////////////////////////////////////////////////// 
     echo "<div id=\"web_Header\">"; 
      require("public/templates/header.php"); 
     echo "</div>"; 
     ////////////////////////////////////////////////////// 
     echo "<div id=\"web_Menu\" class=\"horizontalcssmenu\">"; 
      require("public/templates/menu.php"); 
     echo "</div>"; 
     ////////////////////////////////////////////////////// 
     echo "<div id=\"web_Content\">"; 
     echo "</div>"; 
     ////////////////////////////////////////////////////// 
     echo "<div id=\"web_Footer\">"; 
      require("public/templates/footer.php"); 
     echo "</div>"; 
    echo "</div>"; 
?> 

菜單加載,然後從該菜單中選擇的任何頁面將被加載到「#web_Content」div中。所以當從菜單中選擇help.php頁面時,它會將腳本注入到div中。

任何人都可以看到爲什麼javascript代碼不會執行help.php?

+0

其中從index.php文件名爲help.php? – 2011-04-14 20:09:28

+0

嘗試查看[如何在包含使用Ajax的jQuery加載的內容中包含JavaScript](http://stackoverflow.com/questions/1524543/how-can-i-include-javascript-in-content-loaded-with-jquery -using-ajax) – 2011-04-14 20:10:48

回答

8

你需要用jQuery的只是在頁面加載

<?php 
    echo "<script type='text/javascript'>"; 
     echo "alert(\"Loaded\");"; 
     echo "$(function(){$(\"#newDiv\").draggable().resizable();});"; 
    echo "</script>"; 
    echo "<div id=\"newDiv\">"; 
    echo "</div>"; 
?>` 

$(function(){});會導致代碼要等到以後的頁面已經被完全加載後,初始化..我假設你還裝jQuery UI,你正在使用.draggable()

+0

這是爲什麼顯得這麼搞砸了......我是新來的stackoverflow。 – Adam 2011-04-14 20:09:53

+0

縮進必須恰到好處,至少在我的經驗中。 – Nik 2011-04-14 20:10:53

+2

縮進必須至少有四個空格(或更多)才能將該行格式化爲代碼。 – 2011-04-14 20:11:48

2

這樣做:

<script type='javascript'> 
    $(document).ready (function() { 
     alert('Hi'); 
     // Other initialization 
    }); 
</script> 

而且,只寫了這一切爲HTML。使用這樣的PHP:

<html> 
    <body> 
     <?php if ($var == true) {?> 
      <p>Hello</p> 
     <?php } ?> 
    </body> 
</html> 

如果$var爲false,頁面爲空白。這使得事情更具可讀性。

1

如前所述,你需要用裏面$ jQuery代碼(文件)。就緒()。

您應該停止按照現在的方式進行操作,並使用模板系統和適當的MVC體系結構來爲您的頁面提供服務。如果你一直這樣做,對你來說就是地獄。你不應該有PHP輸出JavaScript代碼,這應該由你以獨立的文件以函數的方式編寫,然後包含在你的HTML文件中。

0

有類似下面的另一個好辦法:

$alert = <<<LABEL 
<script> 
    $(document).ready (function() { 
     alert('Hi'); 
     // Other initialization 
    }); 
</script> 
LABEL; 

echo $alert;