2012-02-01 91 views
0

我想使用AJAX調用來刪除文件。它應該很簡單,但出於某種原因,當使用AJAX訪問$_SERVER['DOCUMENT_ROOT']時出現錯誤我設置了一個HTML表單並且沒有問題。讓我顯示代碼使用JQuery AJAX時訪問PHP全局變量

這是應該刪除圖像的PHP。

$photo_name = $_POST['photo']; 
$cat_id = $_POST['cat_id']; 
$original_path = $_SERVER['DOCUMENT_ROOT'].$photo_name; 
if(file_exists($original_path))unlink($original_path); 
$data['success']=true; 

運行下面返回了jQuery 語法錯誤:意外的標記

$.ajax({ 
    type : 'POST', 
    url : "includes/json_delete_photo.php", 
    dataType : 'json', 
    data: { 
    'photo': $('#image_name').val(), 
    'cat_id': $("#category_id").val(), 
    }, 
    success : function(data){ 
    alert("done"); 
    }, 
    error : function(XMLHttpRequest, textStatus, errorThrown) { 
alert("problem: " + errorThrown); 
    } 
}); 

然而,僅僅使用HTML表單提交到json_delete_photo.php沒有AJAX的作品,如果我刪除使用$_SERVER['DOCUMENT_ROOT']從我的PHP,AJAX不返回錯誤(但我的圖像不會刪除!!)

我一直在抓我的頭在這一個,我不知道如何發送根到頁面。

感謝您的任何幫助。

+1

什麼是* exact *錯誤信息?如上所示的摘錄沒有這樣的語法錯誤。 - 其次,僅僅因爲它通過AJAX進入並不意味着你應該接受未經驗證和未經授權的刪除命令。文件名可能包含冗長的路徑。 – mario 2012-02-01 23:43:37

+2

@mario +1。另外,我不能肯定地說,除非$ _POST ['photo']'具有前導'/',那麼它需要是'$ _SERVER ['DOCUMENT_ROOT']。 '/'。 $ photo_name;'至於令牌錯誤,發佈有問題的行號和行的內容。確保你的'''(撇號)沒有使用「花哨」'''(左/右單引號)。 – drew010 2012-02-01 23:49:08

+0

您在jQuery選擇器'$('#image_name')'中使用了單引號。我不知道你是否可以這樣做,我曾經使用/看到過的所有工作代碼...對選擇器使用雙引號。 – 2012-02-02 00:39:11

回答

0

如果您在該行末尾有逗號?

'cat_id': $("#category_id").val(), 
+0

沒關係。作爲數組的一部分,如果後面有一個項目,後面的逗號沒有什麼區別。 – Alun 2012-02-02 19:40:21

0

作爲一種變通方法,嘗試直接在你的Ajax調用

data: { 
    'photo': $('#image_name').val(), 
    'cat_id': $("#category_id").val(), 
    'document_root': <?php echo $_SERVER['DOCUMENT_ROOT']; ?> 
    }, 

輸出$_SERVER變量,指的是在你的PHP腳本一起$_POST['document_root']變量的傳遞。

要找出語法錯誤的確切原因,請使用諸如"Chrome >> Tools >> Developer Tools >> Network Tab"之類的調試工具,運行腳本並查看您的ajax調用文件。您可以看到發送的確切標題和響應。

+0

Thanksm這是一個很好的電話。立即發現控制檯的優點!管理修復原始錯誤。 – Alun 2012-02-02 23:26:11