当您发布到页面时,PHP 回声去哪里了?

Where do PHP echos go when you are posting to a page?

这可能是个愚蠢的问题。我是 PHP 的新手。我正在尝试查看我正在 post 访问但实际上从未访问过的页面中的一些 echo 语句。我无法直接转到页面的 url,因为如果没有 post 信息,它就会中断。有什么方法可以查看 PHP 在开发者控制台或其他任何地方回显的内容吗?

这里是 Ajax:

function uploadImage(image) {
  
      var data = new FormData();
      data.append("image", image);

      imgurl = 'url';
      filepath = 'path';
      $.ajax({
        url: imgurl,
        cache: false,
        contentType: false,
        processData: false,
        data: data,
        type: "post",
        success: function(url) {
          var image = $('<img class="comment_image">').attr('src', path + url);
          $('#summernote').summernote("insertNode", image[0]);
        },
        error: function(data) {
          console.log(data);
        }
      });
    }

这里是 php 文件:

<?php
  $image = $_FILES['image']['name'];
  $uploaddir = 'path';
  $uploadfile = $uploaddir . basename($image);
  if( move_uploaded_file($_FILES['image']['tmp_name'],$uploadfile)) {
    echo $uploadfile;
  } else {
    echo "Unable to Upload";
  }
?>

所以这段代码运行良好,但我不确定回声在哪里结束以及如何查看它们,还有更多信息我想打印。请帮忙!

这是一个基本示例...

HTML(表格)

<form action="script.php" method="POST">
    <input name="foo">
    <input type="submit" value="Submit">
</form>

PHP 脚本 (script.php)

<?php

    if($_POST){
        echo '<pre>';
        print_r($_POST); // See what was 'POST'ed to your script.
        echo '</pre>';
        exit;
    }

    // The rest of your PHP script...

另一种选择(而不是使用 HTML 表单)是使用像 POSTMAN 这样的工具,它可用于模拟对页面(和 API)的所有类型的请求

您已经处理了来自 PHP 的响应(其中包含所有输出,与任何 echo 一样)

在下面的代码中,url 将包含所有输出。

要查看您得到了什么,只需添加一个 console.log()

$.ajax({ 
    ...
    success: function(url) {
        // Output the response to the console
        console.log(url);

        var image = $('<img class="comment_image">').attr('src', path + url);
        $('#summernote').summernote("insertNode", image[0]);
    },
    ...
}

上述代码的一个问题是,如果上传失败,您的代码将尝试添加字符串“Unable to upload”作为图像源。最好 return JSON 提供更多信息。像这样:

// Set the header to tell the client what kind of data the response contains
header('Content-type: application/json');

if( move_uploaded_file($_FILES['image']['tmp_name'],$uploadfile)) {
    echo json_encode([
        'success' => true,
        'url'     => $uploadfile,
        // add any other params you need
    ]);
} else {
    echo json_encode([
        'success' => false,
        'url'     => null,
        // add any other params you need
    ]);
}

然后在 Ajax 成功回调中,您现在可以检查它是否成功:

$.ajax({ 
    ...
    dataType: 'json', // This will make jQuery parse the response properly
    success: function(response) {
        if (response.success === true) {
            var image = $('<img class="comment_image">').attr('src', path + response.url);
            $('#summernote').summernote("insertNode", image[0]);
        } else {
            alert('Ooops. The upload failed');
        }
    },
    ...
}

如果您在 PHP 中向 json_encode() 中的数组添加更多参数,您只需通过以下方式访问它们:response.theParamName.