为什么我的 PHP 脚本在被 AJAX JQuery 调用时没有被执行?

Why is my PHP script not being executed when calling it by AJAX JQuery?

我想在单击按钮时执行 PHP 脚本,通过 AJAX JQuery 将图像从 URL 下载到我的服务器。

这是 .html 文件中的 AJAX 代码:

在头部:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

正文部分:

<button type="button" id="btntest">Test PHP</button>

<script>
    $("#btntest").on('click',function(){
        alert("start");
        var data = {"image-url" : "/serverfolder/Image.png","path" : "https://example.com/Image.png"};
        $.ajax({
          type: 'POST',
          url: "test.php",
          data: data,
          success: function(resultData) { alert("success"); }
       });
    });
</script>

test.php文件中的代码:

<?php
$params = $_POST['data'];
$path = $params['path'];
$image_url = $params['image-url'];
    
$data = file_get_contents($path);
$new = $image_url;
file_put_contents($new, fopen($data, 'r'));
?>

问题:我没有收到“成功”警报,而是收到 test.php 文件的内部服务器错误。如果 test.php 文件看起来像这样:

<?php
$params = $_POST['data'];
$path = $params['path'];
$image_url = $params['image-url'];
?>

出现成功警报,但这对我没有帮助,因为我想将文件从 $path 下载到服务器目录 $image_url。感谢任何有关如何让它工作的帮助。

你可以像这样在 ajax 中发送数据

data:{data:data}

没关系 或者你可以发送像

这样的数据
data:{image_url : "/serverfolder/Image.png",path : "https://example.com/Image.png"}

这种形状你不需要在php文件中解码并像它一样使用

$path = $_POST['path']; 
$image_url = $_POST['image_url'];

就是这样