清理PHP中的URL和JavaScript加载顺序问题

问题描述

| 我正在尝试建立一个PHP webpage.packing.PHP包含:
<!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>Untitled Document</title>
<!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\" lang=\"en\" xml:lang=\"en\">
        <Meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>
        <Meta name=\"description\" content=\"Fresh Sliding Thumbnails gallery with jQuery and PHP\" />
        <Meta name=\"keywords\" content=\"jquery,images,gallery,full page,thumbnails,scrolling,sliding,PHP,xml\"/>
        <link rel=\"stylesheet\" href=\"css/style.css\" type=\"text/css\" media=\"screen\"/>


<link rel=\"stylesheet\" type=\"text/css\" href=\"css/ddsmoothmenu.css\" />

<script type=\"text/javascript\" src=\"js/jquery-1.6.1.js\"></script>


<link rel=\"stylesheet\" type=\"text/css\" href=\"css/site.css\" />

<script type=\"text/javascript\" src=\"js/ddsmoothmenu.js\">

</script>
        <script type=\"text/javascript\" src=\"js/jquery.gallery.js\"></script>

<script type=\"text/javascript\" >
$(document).ready( function(){


  // Menu 

  ddsmoothmenu.init({
    mainmenuid: \"smoothmenu1\",//menu DIV id
    orientation: \'h\',//Horizontal or vertical menu: Set to \"h\" or \"v\"
    classname: \'ddsmoothmenu\',//class added to menu\'s outer DIV
    //customtheme: [\"#1c5a80\",\"#18374a\"],contentsource: \"markup\" //\"markup\" or [\"container_id\",\"path_to_menu_file\"]
}); 
});

</script>
而我的.htaccess是
RewriteEngine On
RewriteRule ^packing/Pure packing.PHP?id=pure
RewriteRule ^packing/Extravirgin packing.PHP?id=EV
现在,当我打开PHP时,它会正确地表示我打开了packing.PHP。 但是,当我使用干净的URL打开时,萤火虫给出了一个错误,指出未定义$。 现在我知道问题是由于javascript的加载顺序错误所致。 为什么会发生?我该如何解决? 谢谢。     

解决方法

        当您使用干净的URL时,浏览器会认为它位于其他目录中(
/packing/pure
)。指向您的JS文件的相对URL将不再起作用。 改用绝对URL:
 <script type=\"text/javascript\" src=\"/js/jquery.gallery.js\">
    ,        路径可能有问题?您不是在提供路径,而是在将路径从根目录(
packing.php
)更改为第二级(
packing/Pure
)。它可能在错误的路径中查找.js文件,例如
packing/js/
而不是
/js
。 尝试使用绝对路径进行加载:
<script type=\"text/javascript\" src=\"/js/jquery-1.6.1.js\"></script>
(注意斜线!) 甚至
<script type=\"text/javascript\" src=\"http://yoursite.com/js/jquery-1.6.1.js\"></script>