Json Encode работает на одном сервере, а на другом выдает ошибку undefined

У меня очень простая система загрузки файлов с использованием PHP и Dropzone. Загрузите файл PHP, как показано ниже

<?php
error_reporting(E_ALL);
    // define absolute folder path
    $brand = $_POST['brand'];
    $reference = $_POST['reference'];

    $dest_folder = 'images/'.$brand.'/';
    $url = 'https://www.example.com/testupload/';
 
if (!empty($_FILES)) {

    if (!file_exists($dest_folder) && !is_dir($dest_folder)) mkdir($dest_folder);

    foreach($_FILES['file']['tmp_name'] as $key => $value) {
        
        $ext = strtolower(pathinfo($_FILES['file']['name'][$key],PATHINFO_EXTENSION));
        
       
        if (file_exists($dest_folder) && !is_dir($dest_folder)){
             continue;
        }else{
            mkdir($dest_folder);
        } 
        
        $imgName =  $brand."-".$reference.'-picture'.$key.'.'.$ext;
        
        $tempFile = $_FILES['file']['tmp_name'][$key];
        $targetFile =  $dest_folder.$imgName;
        move_uploaded_file($tempFile,$targetFile);
    }
    
    
         $dir = $dest_folder;
        $data = scandir($dir);
        $arr = [];
        
        
        foreach($data as $key=>$dataVal)
        {
            if ($dataVal!='.' && $dataVal!='..'){
                
                 
                   $arr[] = $url.$dir.$dataVal; 
               
              
           }
        }
        
         $imgstring = implode(",",$arr);
        
    /**
     *  Response 
     *  return json response to the dropzone
     *  @var data array
     */
    $data = [
        "file" =>$brand,
        "dropzone" => $_POST["dropzone"],
        "img"=>$imgstring
    ];
    
    file_put_contents('abc.txt',$data);
    
    header('Content-type: application/json');
    echo json_encode($data);
    exit();

}

и My DropZone js, как показано ниже

// disable autodiscover
Dropzone.autoDiscover = false;


 
var myDropzone = new Dropzone("#dropzone", {
    url: "upload.php",
    method: "POST",
    paramName: "file",
    autoProcessQueue : false,
    acceptedFiles: "image/*",
    maxFiles: 5,
    maxFilesize: 2, // MB
    uploadMultiple: true,
    parallelUploads: 100, // use it with uploadMultiple
    createImageThumbnails: true,
    thumbnailWidth: 120,
    thumbnailHeight: 120,
    addRemoveLinks: true,
    timeout: 180000,
    dictRemoveFileConfirmation: "Are you Sure?", // ask before removing file
    // Language Strings
    dictFileTooBig: "File is to big ({{filesize}}mb). Max allowed file size is {{maxFilesize}}mb",
    dictInvalidFileType: "Invalid File Type",
    dictCancelUpload: "Cancel",
    dictRemoveFile: "Remove",
    dictMaxFilesExceeded: "Only {{maxFiles}} files are allowed",
    dictDefaultMessage: "Drop files here to upload",
});

myDropzone.on("addedfile", function(file) {
    
    console.info(file);
});

myDropzone.on("removedfile", function(file) {
    // console.info(file);
});

// Add mmore data to send along with the file as POST data. (optional)
myDropzone.on("sending", function(file, xhr, formData) {
    formData.append("dropzone", "1"); // $_POST["dropzone"]
});

myDropzone.on("error", function(file, response) {
    console.info(response);
});




/**
 *  Add existing images to the dropzone
 *  @var images
 *
 */


 

    $("body").on("submit","#dropzone-form",function(e){
         e.preventDefault();
         
           var brand      =    $('body .brand').val();
                var reference   =  $("body .reference").val();
                
                if (brand=='' || reference==''){
                    alert('Please check your Input');
                    return false;
                }
         
         myDropzone.on("sending", function(file, xhr, formData){
                var brand      =    $('body .brand').val();
                var reference   =  $("body .reference").val();
                formData.append("brand", brand);
                formData.append("reference", reference);
            }),
        
           
         myDropzone.processQueue();
    });
    
    
    myDropzone.on("success", function(file,response) {

        console.info(response.img);
        $('#imgResponse').html(response.img);
    });

я проверил это

myDropzone.on("success", function(file,response) {

        console.info(response.img);
        $('#imgResponse').html(response.img);
    });

в приведенной выше функции я могу запустить предупреждение, поэтому событие успеха работает, но

console.info(response.img);

не работает. Он работает нормально, но просто ответ не получает должным образом, и поэтому он выдает неопределенное сообщение в консоли. Тот же код работает нормально на одном сервере, а на другом я получаю эту ошибку. Я также проверил, что модуль json включен на сервере и протестирован с использованием примера кода для кодирования и декодирования. Я также проверил, что отображение включено в phpinfo(). Я не понимаю, почему он не работает на этом сервере. Дайте мне знать, если кто-то может помочь мне решить головоломку.

Спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
133
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Убедитесь, что ваш файл получен на обоих серверах. Похоже, на сервере с ошибкой ваш файл не загружается, поэтому вы получаете пустой ответ

Оба файла или на одном сервере. Я говорю, что весь этот код работает на одном сервере без ошибок, но не работает на другом сервере. Я не отправляю файлы на другой сервер. Спасибо!

Riya Shah 10.12.2020 07:40

@RiyaShah, вам нужно убедиться, что загружаемый вами файл поступает на сервер. У вас есть условие в коде, что если файл не получен, ответа не будет, а на стороне клиента response.img будет undefined. Просто print_r $_FILES на сервере, который работает, и на сервере, который не работает.

Asim Raza 10.12.2020 07:55

Файлы загружаются, ошибок нет. Я протестировал его, даже если я жестко запрограммировал img в $ data, он все еще не работает!

Riya Shah 10.12.2020 07:57

В этом случае вам может потребоваться предоставить дополнительную информацию. Можете ли вы поделиться ответом на оба запроса?

Asim Raza 10.12.2020 08:04
Ответ принят как подходящий

Пожалуйста, закомментируйте 2 строки ниже из скрипта PHP.

  1. file_put_contents('abc.txt',$data);
  2. header('Content-type: application/json');

И заменить error_reporting(E_ALL); на error_reporting(0); Это отключит предупреждающее сообщение из ответа сервера.

Ага! Это была проблема, она исправлена. Спасибо!

Riya Shah 10.12.2020 10:10

Другие вопросы по теме