Код: Выделить всё
Uncaught TypeError: URL.createObjectURL: Argument 1 is not valid for any of the 1-argument overloads.
объект:
Объект File, Blob или MediaSource, для которого нужно создать URL-адрес объекта.
В совокупности это может означать только то, что данные blob, полученные с сервера, имеют неверный формат. Когда я регистрирую BLOB-объект типа на консоли, он говорит "строка".
Это часть кода, используемого на стороне сервера:
Код: Выделить всё
// Reading arguments, sanitize and validate data
// Query database and store in $results (as assoc_array)
$delimiter = ";";
$file = fopen("php://output","w");
$cols_printed = false;
foreach($results as $row) {
if (!$cols_printed){
// FPUT 1: Write Aliases of query to file once
fputcsv($file, array_keys($row), $delimiter);
$cols_printed = true;
}
// FPUT 2: Write values to file
fputcsv($file, array_values($row), $delimiter);
}
// Close file, sending headers
Я попробовал преобразовать весь BLOB-объект явно перед вызовом URL.createObjectURL в JS, что позволило мне успешно загрузить файл без ошибок, но самих строк нигде не было видно. Так чем же отличается второй FPUT?
РЕДАКТИРОВАТЬ 1: Я провел дополнительное тестирование. Если я удалю FPUT1 из оператора if, он выдаст ту же ошибку. В сценарии .php нет других var_dump, print_r или echo, которые могли бы выдать такой вывод. Даже если добавить echo «test»; в самом конце этого файла, две новые строки все равно появятся после него. Я мог бы исправить это, переместив весь код в основной файл плагина.php. Однако клиент по-прежнему воспринимает ответ как строку, несмотря на то, что мой SELECT изменен на один столбец INT.
Подробнее здесь: https://stackoverflow.com/questions/646 ... any-of-the
Мобильная версия