2012-02-01 96 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