2011-02-22 55 views
1

我嘗試後,像這樣一個Ajax請求:jQuery的AJAX發佈目錄

$.ajax({ 
      url: 'directory/file.php', 
      type: 'POST', 
      data: 'param1=' + param1 + '&param2=' + param2, 
      success: function(response){ 
       $('#content').html(response); 
      } 
}); 

當我使用此代碼段POST請求不起作用,但如果我移動的文件上一級目錄和使用:

$.ajax({ 
      url: 'file.php', 
      type: 'POST', 
      data: 'param1=' + param1 + '&param2=' + param2, 
      success: function(response){ 
       $('#content').html(response); 
      } 
}); 

然後它神奇地工作。

我曾嘗試:

/directory/file.php和FULLPATH /目錄/ file.php

我也包括在內的完整路徑,當我提出這一個目錄,它仍然工作。

我一定會看起來很簡單,但我無法弄清楚。

+0

我沒有看到任何錯誤,但你有沒有嘗試添加../../或../或/之前的網址? – Peter 2011-02-22 18:53:21

+0

是的,我嘗試了所有這些。 – Melissa 2011-02-22 18:57:43

+0

在哪個目錄是file.php? – Val 2011-02-22 19:02:58

回答

1

沒有什麼明顯的錯誤用的代碼塊的,所以 問題必須在別處。在AJAX上工作時,如果 工作不正常,下面是我通常採取的一系列步驟,即 找出問題出在哪裏。很多這是相當 明顯,但我發現,一無所獲, 系統驗證每個反過來將通常幫助我 迅速解決問題。最後,我通常會使用Firebug參考 ,因爲這是我的首選工具,但您可以使用其他工具輕鬆完成大部分工作。

首先,在使用AJAX代碼時,我總是打開Firebug。 加載頁面,並確保沒有JavaScript語法頁面本身可以防止事件處理程序 被有線等

下一頁上 錯誤,我會修改代碼,你給是以下:

alert('Running AJAX request'); 
$.ajax({ 
      url: 'directory/file.php', 
      type: 'POST', 
      data: 'param1=' + param1 + '&param2=' + param2, 
      success: function(response){ 
       alert('Response received: ' + response); 
       $('#content').html(response); 
       alert('Document modified.'); 
      }, 
      error: function(req) { 
       alert('Error: ' + req.status); 
      } 
}); 

現在,當你觸發AJAX請求,你應該得到足夠的 信息會告訴你,在這個過程中得到的東西絆倒 起來。

如果您沒有看到'正在運行AJAX請求',請檢查應該觸發您的請求的事件處理程序 。如果您看到 '錯誤:',請驗證請求網址是否與您預期的一樣 ,並且手動瀏覽到該網址會給出預期結果。

如果您看到'收到的回覆:',但回覆文本不是 您期望的是,再次嘗試在您的 瀏覽器中手動瀏覽頁面。如果您在瀏覽器中看到的內容和AJAX請求所看到的內容存在差異,請使用Firebug的網絡 選項卡檢查瀏覽器 和AJAX請求發送的參數之間的差異(例如,您可能需要附加 a AJAX請求中的會話標識符)。

如果所有的作品,但文件的修改不 發生如預期,然後用Firebug的DOM選項卡,以驗證 文件ID被DOM和腳本之間的匹配,並 檢查DOM看什麼更改實際上是以$('#content')。html(response)行的 結果發生的。

1

嘗試使用$ .ajax方法的「error」-callback並返回狀態碼。

$.ajax({ 
      url: 'directory/file.php', 
      type: 'POST', 
      data: 'param1=' + param1 + '&param2=' + param2, 
      success: function(response){ 
       $('#content').html(response); 
      }, 
      error: function(req, status, error) { 
         window.alert(req + "\n" + status + "\n" + error); 
        } 
}); 

有可能是與該目錄中,這需要至少755你搭配chmod問題(一切,但只有組所有者可以寫入)。在這種情況下,應該由jQuery返回403-HTTP-Status-Code。

這可能有助於發現錯誤。

0

我試過你的代碼使用jquery 1.4.2它工作正常。所以除了也許你沒有該文件夾的訪問權限,或者你以某種方式混淆了目錄結構。

嘗試在您的瀏覽器中粘貼網址$ .ajax並查看它是否有效。

乾杯

2

我最近有同樣的問題。在玩過上面推薦的Firebug(歡呼聲,btw!)後,我意識到問題在於.php文件中,而不是在JavaScript中。當我將一個文件夾移動到一個文件夾時,它不再像以前那樣引用相同的文件夾和文件。

希望這可以幫助我從最近幾個小時的頭痛中解脫出來!