Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JQuery AJAX时访问PHP全局变量_Php_Jquery - Fatal编程技术网

使用JQuery AJAX时访问PHP全局变量

使用JQuery AJAX时访问PHP全局变量,php,jquery,Php,Jquery,我正在尝试使用AJAX调用删除一个文件。它应该足够简单,但由于某种原因,我在使用AJAX时尝试访问$\u服务器['DOCUMENT\u ROOT']时出错 我设置了一个HTML表单,没有问题。让我看看代码 这是应该删除图像的PHP $photo_name = $_POST['photo']; $cat_id = $_POST['cat_id']; $original_path = $_SERVER['DOCUMENT_ROOT'].$photo_name; if(file_exists($ori

我正在尝试使用AJAX调用删除一个文件。它应该足够简单,但由于某种原因,我在使用AJAX时尝试访问
$\u服务器['DOCUMENT\u ROOT']
时出错

我设置了一个HTML表单,没有问题。让我看看代码

这是应该删除图像的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就可以了,如果我从php中删除了
$\u SERVER['DOCUMENT\u ROOT']
,AJAX不会返回错误(但我的图像不会删除!!)

我一直在抓挠我的头在这个问题上,我不知道如何发送根到页面


谢谢您的帮助。

您应该在这一行的末尾加上尾随的逗号吗

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

作为一种解决方法,请尝试直接在ajax调用中输出
$\u服务器
变量

 data: {
    'photo': $('#image_name').val(),
    'cat_id': $("#category_id").val(),
    'document_root': <?php echo $_SERVER['DOCUMENT_ROOT']; ?>
  },
数据:{
'photo':$('image_name').val(),
'类别id':$(“#类别id”).val(),
“文档根目录”:
},
并引用php脚本中传递的
$\u POST['document\u root']
变量


要找出语法错误的确切原因,请使用调试工具,如
“Chrome>>工具>>开发人员工具>>网络选项卡”
,运行脚本并查看ajax调用的文件。您可以看到发送的确切标题和响应。

确切的错误消息是什么?如上所示的摘录没有此类语法错误。-第二,仅仅因为它是通过AJAX发布的,并不意味着你应该接受未经验证和未经授权的删除命令。文件名可能包含较长的路径。@mario+1。另外,我也不能确定,但除非
$\u POST['photo']
有一个前导
/
,否则它必须是
$\u服务器['DOCUMENT\u ROOT']./'$照片名称
对于令牌错误,张贴有问题的行号和行的内容。请确保您的
(撇号)没有使用“fancy”
(左/右单引号)。您在jQuery选择器
$(“#image_name”)中使用了单引号
。我不确定你是否能做到这一点,我曾经使用/见过的所有工作代码……都使用双引号作为选择器。感谢你的回答,mario我已经将代码简化,以清楚地演示问题。错误发生在上面概述的简单代码中。是的,我的撇号很好。将它们切换为双引号(“)仍然会导致错误。cillosis-选择器可以与单引号一起使用。它是或。我回家后会发布确切的错误消息,以再次导致问题。事实是,如果我删除$\u服务器['DOCUMENT\u ROOT']从代码中,不做任何更改,它运行良好。如果我有它,它只在从窗体调用时运行,而不是通过AJAX。@mario确切的错误消息是SyntaxError:意外标记,这无关紧要。作为数组的一部分,后面的逗号在后面是否有项时没有任何区别。谢谢这是一个很好的调用。Dis现在介绍控制台的优点!设法修复了最初的错误。