我有问题,为什么我遇到这个错误在我的响应,我有模块,我需要上传多个使用Ajax和PHP作为后端。
Warning: count():参数必须是一个数组或一个对象,该数组或对象在C:\xampp\htdocs\PSMID\Function\mediaunction.php行17
9
WarningC:\xampp\htdocs\PSMID\Function\mediaunction.php17
我将向你们分享我已经制作的示例代码。
前端:
var storeFile =[];
$('#media_file').on('change',function(e){
var files = e.target.files;
$.each(files, function(i, file) {
storeFile.push(file);
})
})
$('.news_media_button').on('click',function(){
const media_pages = $('#media_pages').val();
const media_title = $('#media_title').val();
//const media_content = $('#media_content').val();
const ck_editor_content = CKEDITOR.instances['media_content'].getData();
const media_link = $('#media_link').val();
const media_file = $('#media_file').prop('files')[0];
const hidden_auth_user = $('#hidden_auth_user').val();
const data = new FormData();
data.append('media_pages',media_pages);
data.append('media_title',media_title);
data.append('media_content',ck_editor_content);
data.append('media_link',media_link);
data.append('files',storeFile[0]);
data.append('hidden_auth_user',hidden_auth_user);
Swal.fire({
title: 'Are you sure to save this data?',
type: 'warning',
showCancelButton: true,
confirmButtonColor: '#008B74',
confirmButtonText: 'Okay'
}).then((result) => {
if (result.value) {
$.ajax({
url:'./Function/mediaAddFunction.php',
data:data,
type:'POST',
dataType:'JSON',
enctype: 'multipart/form-data',
processData: false,
contentType: false,
success:function(response){
console.log(response);
// Swal.fire(
// 'Success!',
// 'Data Saved.',
// 'success'
// )
// if(response.status == 'Success') {
// location.reload();
// }
},
error:function(response) {
console.log(response);
}
});
}
})
});
后端:
for($i=0;$i<count($_FILES["files"]["name"]);$i++)
{
echo $_FILES["files"]["name"][$i];
}
Html:
<div class="container-fluid">
<div class="jumbotron" style="background-color:white">
<div class="container-fluid">
<input type="hidden" value="" id="hidden_auth_user" name="">
<div class="container">
<div class="row">
<h2 class="col-md-10">News Media</h2>
<button class="btn btn-primary news_media_button col-md-2 form-control" id="custom_button">Save Data</button>
</div>
<hr>
<br><br>
<div class="row">
<div class="col-md-6">
<label style="font-weight: 500; font-size:14px;">Choose Media Page</label>
<select class="form-control" id="media_pages">
<option value="announcement">Announcement</option>
<option value="news_online">News Online</option>
<option value="info_graphics">Info Graphics</option>
</select>
</div>
<div class="col-md-6">
<label style="font-weight: 500; font-size:14px;">Title</label>
<input type="text" name="media_title" id="media_title" placeholder="Title" class="form-control">
</div>
</div>
<br><br>
<div class="row">
<div class="col-md-6">
<label style="font-weight: 500; font-size:14px;">File Upload</label>
<div class="custom-file">
<input type="file" name="files[]" multiple placeholder="Title" id="media_file" value="" class="custom-file-input form-control">
<label class="custom-file-label" for="inputGroupFile04"></label>
</div>
</div>
<div class="col-md-6">
<label style="font-weight: 500; font-size:14px;">File Link</label>
<input type="text" name="" placeholder="Link" id="media_link" value="" class=" form-control">
</div>
</div>
<br><br>
<div class="row">
<div class="col-md-12">
<label style="font-weight: 500; font-size:14px;">Content</label>
<textarea cols="12" name="content_article" class="form-control" id="media_content"></textarea>
<script>
CKEDITOR.replace('content_article');
</script>
</div>
</div>
<br><br>
<div class="row">
<div class="col-md-12">
</div>
</div>
</div>
</div>
</div>
</div>
你已经发布了你的php代码,如下所示:
后端:
for($i=0;$i<count($_FILES["files"]["name"]);$i++)
{
echo $_FILES["files"]["name"][$i];
}
使用您的代码,我有:
注意:未定义索引:第6行D:\Web\test\files\files-2.php中的文件
警告:count():参数必须是在第6行的D:\Web\test\files\files-2.php中实现可数的数组或对象
要修复您的代码,您必须更改后端:
if (isset($_FILES["files"]["name"])) {
for ($i = 0; $i < count($_FILES["files"]["name"]); $i++) {
echo $_FILES["files"]["name"][$i];
}
}
这将解决你的问题...神奇的代码是:
if (isset($_FILES["files"]["name"])) {
...
}
刚刚测试了我的files-1.php
文件,没有任何警告或错误,它可以在带有php/7.3.6(64it)
和php/7.2.17(64位)
的真实服务器上正常工作。。。还使用相同的PHP版本在我的本地主机上进行了测试。。。
files-1.php:
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
<label for="files1">File:</label> <input type="file" id="files1" name="files[]" size="35"><br>
<label for="files2">File:</label> <input type="file" id="files2" name="files[]" size="35"><br>
<input type="submit" value="Send">
</form>
<?php
if (isset($_FILES['files']['name'])) {
for ($index = 0; $index < count($_FILES['files']['name']); $index++) {
if ($_FILES['files']['name'][$index] != "") {
echo $_FILES['files']['name'][$index];
}
}
}
?>
下面我的示例(files-2.php
)根据您的示例有一个非常小的变化,这里我没有任何警告或错误。。。在真正的服务器上使用PHP/7.3.6
和PHP/7.2.17
。。。还使用相同的PHP版本在我的本地主机上进行了测试。。。
files-2.php:
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
<label for="files">File:</label> <input type="file" id="files" name="files[]" size="35" multiple><br>
<input type="submit" value="Send">
</form>
<?php
if (isset($_FILES['files']['name'])) {
for ($index = 0; $index < count($_FILES['files']['name']); $index++) {
if ($_FILES['files']['name'][$index] != "") {
echo $_FILES['files']['name'][$index];
}
}
}
?>
PHP动态生成的源html:
<form action="/files/files-2.php" enctype="multipart/form-data" method="post">
<label for="files">File:</label> <input type="file" id="files" name="files[]" size="35" multiple><br>
<input type="submit" value="Send">
</form>
test.zip
正如您所见,没有错误或警告。。。
在线测试:
https://3v4l.org/tqgUp
http://sandbox.onlinephpfunctions.com/code/4e0a5326fc2508e1ca4db90051061b4584b86eae
希望这有帮助。
在我的网站上,我允许人们上传图片画廊。当他们点击图像时,底部有一个下一个和上一个按钮,这样他们就可以很容易地在图像中来回滚动。 我在位于/opt/cpanel/ea-php72/root/usr/var/log/php-fpm的日志中得到以下错误/ 这是关于我代码中的以下行: 下面是该行附带的其他代码: 基本上,这段代码使用get_字段(“gallery”)获取gallery中的照片总数,并将该数
我有一个错误:警告:count():参数必须是实现可计数的数组或对象
错误: Countable():参数必须是实现可数的数组或对象 错误来自\vendor\yiisoft\yii2\helpers\BaseHtml.php(第1302行) 它调用:供应商\yiisoft\yii2\Helers\BaseHtml.php(第150行) 这反过来又要求: (也在同一文件中) 问题是:这个错误的来源是什么,它是如何修复/避免的? 答案包括在内,如下所示。。。问题的原因不
我安装最新版本的OSCommerce框架。在后端类别/产品错误显示如下: 警告: sizeof():参数必须是一个数组或一个在第93行实现C:\xampp\htdocs\osCommerce\catalog\admin\包括\函数\general.php中可数的对象 我尝试使用和但仍然不起作用,下面是代码
如果单击某个链接查看证书列表,则会出现错误。在某些系统中,它工作正常。我使用相同的代码测试了大约3-4个系统。它工作正常,但在一个系统中,它不工作。 这是我在计数时遇到问题的代码 获取此错误: 遇到一个PHP错误 严重性:警告 Message:count():参数必须是数组或实现可计数的对象 文件名:doctor/profile.php 电话号码:533 但它工作在良好的系统中,我正在使用相同的代
我有这个代码返回一个错误: 参数必须是实现可数的数组或对象?