当您发布到页面时,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
.
这可能是个愚蠢的问题。我是 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
.