Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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
Javascript 使用“获取后自动刷新页面”;移动“U-file()”;PHP中的方法_Javascript_Php_Fetch_Move Uploaded File - Fatal编程技术网

Javascript 使用“获取后自动刷新页面”;移动“U-file()”;PHP中的方法

Javascript 使用“获取后自动刷新页面”;移动“U-file()”;PHP中的方法,javascript,php,fetch,move-uploaded-file,Javascript,Php,Fetch,Move Uploaded File,我使用move_uploaded_file()方法在PHP中通过获取和上载文件发送文件。问题是当我使用move_uploaded_file()方法页面自动刷新时,甚至当我上载多个文件时,第一次上载并再次刷新页面 PHP代码 if($img['error'] == 0 && $img['size'] > 0){ if (!is_dir('naber')) { mkdir('naber', 0777, true);

我使用move_uploaded_file()方法在PHP中通过获取和上载文件发送文件。问题是当我使用move_uploaded_file()方法页面自动刷新时,甚至当我上载多个文件时,第一次上载并再次刷新页面

PHP代码

    if($img['error'] == 0 && $img['size'] > 0){
        if (!is_dir('naber')) {
            mkdir('naber', 0777, true);
        }
        
        $allowedExts = array("gif", "jpeg", "jpg", "png");
        // $extension = explode(".", $_FILES["image"]["name"]);
        // $extension = end($extension);
        $extension = pathinfo($img['name'])['extension'];
        if(!(in_array($extension, $allowedExts))){
            $result['status'] = false;
            $result['errmessage'] = 'Image type is invalid';
            exit(json_encode($result));
        }
        $target_path = 'naber/';
        $filename = time().'.'. strtolower($extension);
        $full_path = $target_path."".$filename;
        if(move_uploaded_file($img['tmp_name'], $full_path)){
            $result['status'] = true;
            $result['message'] = 'Image added successfully!';
        }else{
            $result['status'] = false;
            $result['errmessage'] = 'Image type is invalid';
            exit(json_encode($result));
        }
    }
    exit(json_encode($result));
Javascript代码:

if(document.querySelector('#submit')) document.querySelector('#submit').addEventListener('click', (e) =>{
    e.preventDefault();
    ...
    fd = new FormData();
    Array.from(document.querySelectorAll('.test')).some((t) => {
        .......
                tests['test'+i]['img'] = t.querySelector('.input-ifile').files[0];
                fd.append('test'+i+'-img',tests['test'+i]['img']);
        .......
    fetch('handlers/handler.php', { method: 'POST' , body: fd})
    .then(function (response) {
        return response.text();
    })
    .then(function (body) {
        console.log(body)
        return false;
    });
})

理想的结果是将文件上载到服务器,而index.php不会被刷新。

解决方案:花费数小时查找问题后,发现问题不在代码中。这是由于Visual Studio Live Server扩展而发生的。要防止自动重新加载,只需关闭live server就足够了。

检查浏览器控制台是否存在JavaScript错误(首先将其设置为在页面重新加载之后保留数据),检查服务器在网络面板中的响应方式。没有错误或其他错误。PHP脚本运行良好,因此文件上传没有任何问题,但页面刷新本身。那么服务器当时的响应是什么?实际上什么都没有,我使用fetch,在刷新之前,我在网络面板中捕获了respond,respond为空。由于move\u uploaded\u file()方法,正在刷新,但我不知道为什么。似乎在
的每次迭代中都会发出
fetch
请求。一些
循环,但仅初始化该循环外的单个
FormData
对象