2012-09-24 41 views
2

我遇到了AJAX的一個奇怪問題。我有一個要求此頁面上的AJAX功能的HTML頁面:相對路徑在Ajax中不起作用

的public_html /測試/ books.html

我試圖調用Ajax的文件在這個頁面上:

的public_html /名單/include/vote_up.php

我想inclue它的唯一合乎邏輯的方式,這是這樣的:

xmlhttp.open("GET","../lists/include/vote_up.php?id="+id,true); 

但請求不會到達的PHP文件。我究竟做錯了什麼?就在同books.html頁,我有幾個從包括名單/包括「文件夾,其工作,例如:

include('../lists/include/functions.php'); 

下面是使用絕對路徑的更新功能:

function voteUp(id){ 

    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      document.getElementById("item_voting"+id).innerHTML=xmlhttp.responseText; 
     } 
    } 

    xmlhttp.open("GET","mydomain.com/lists/include/vote_up.php?id="+id,true); 
    xmlhttp.send(); 
} 
+0

你是否試過'/lists/include/vote_up.php?id = whatever',以這樣的斜槓開始?這是我總是使用的,但我忘記了這是否需要額外的服務器配置。 – sgroves

回答

-2

的這裏的問題是您在xmlhttp.open函數中使用系統路徑。 Javascript是執行客戶端,所以系統路徑沒有任何意義。 ..符號在這種情況下是不可用的。你應該提供一個URL。如果你想做domainname.domain/lists/include/voice_up.php,它會工作得很好。

+0

我不認爲這是正確的,因爲1)我有'../etc'路徑的AJAX函數,2)使用絕對路徑給出一個Javascript錯誤。 – jovan

+0

你甚至讀過文檔嗎?它清除說URL。 https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#open%28%29 Javascript在客戶端的Web瀏覽器中運行。您的文件系統路徑沒有意義。 – thatidiotguy

+0

使用domainname.com/lists/include/vote_up.php不起作用。 – jovan

0

絕對路徑something.com/lists/include/voice_up.php應該工作,現在我認爲,因爲您仍然在public_html文件夾中,即使您提供的相對路徑應該也能正常工作,因爲我經常將它們用於圖像和.css文件。我建議發佈更多的代碼來說清楚。