Объявление нескольких переменных в JavaScript

Будет ли typeof до и после преобразования одинаковым?

blockquote>

Поскольку «file» не является типом данных JavaScript. Все, что не является примитивным, является объектом.

console.log(typeof 1);
console.log(typeof "1");
console.log(typeof null);
console.log(typeof undefined);
console.log(typeof [1,2,3]);
console.log(typeof {hello: "world"});
console.log(typeof new Date());
console.log(typeof document.body);
console.log(typeof window);

2) Как я могу отправить массивы файловых объектов в бэкэнд? Есть ли другое решение?

blockquote>
  1. Понимать, как форматируются данные при отправке их по HTTP
  2. Понимать ограничения jQuery

Вы не можете отправить массив. Вы можете отправить только некоторый текст, который серверный код может собрать в массив.

Для обоих стандартных кодировок, поддерживаемых формами , PHP заполнит

Будет ли typeof до и после преобразования одинаковым?

blockquote>

Поскольку «file» не является типом данных JavaScript. Все, что не является примитивным, является объектом.

[110]

2) Как я могу отправить массивы файловых объектов в бэкэнд? Есть ли другое решение?

blockquote>
  1. Понимать, как форматируются данные при отправке их по HTTP
  2. Понимать ограничения jQuery

Вы не можете отправить массив. Вы можете отправить только некоторый текст, который серверный код может собрать в массив.

Для обоих стандартных кодировок, поддерживаемых формами , PHP заполнит [118] данными в них.

Если имя поля в этих данных заканчивается на [], PHP поместит массив в

Будет ли typeof до и после преобразования одинаковым?

blockquote>

Поскольку «file» не является типом данных JavaScript. Все, что не является примитивным, является объектом.

[110]

2) Как я могу отправить массивы файловых объектов в бэкэнд? Есть ли другое решение?

blockquote>
  1. Понимать, как форматируются данные при отправке их по HTTP
  2. Понимать ограничения jQuery

Вы не можете отправить массив. Вы можете отправить только некоторый текст, который серверный код может собрать в массив.

Для обоих стандартных кодировок, поддерживаемых формами , PHP заполнит [118] данными в них.

Если имя поля в этих данных заканчивается на [119], PHP поместит массив в [1110].

Если вы передадите массив в jQuery ajax:

data: { someValue: [1, 2, 3] }

Тогда jQuery закодирует его как:

someValue[]=1&someValue[]=2&someValue[]=3

… поэтому PHP сгенерирует массив.

Однако значения должны быть вещами, которые понимает jQuery. Он не может обрабатывать FormData объектов.

Если вы хотите отправить объект FormData (что необходимо сделать для отправки файлов), вам нужно отправить вместо объекта:

jQuery.ajax({
    url: "/foo",
    data: a_form_data_object,
    processData: false,
    contentType: false,
});
[1134 ] Вам нужно processData, чтобы он не пытался преобразовать объект FormData (то есть, чтобы он позволил XMLHttpRequest сделать это). Вам нужно contentType, чтобы остановить его, переопределяя один XMLHttpRequest, сгенерированный из объекта FormData.

Итак, чтобы отправить массив, мы возвращаемся к правилам, которые я описал выше. Вы сказали:

fileBag.append(file_name, file);
blockquote>

Но чтобы получить массив, вам нужно имя, заканчивающееся на [].

fileBag.append("myname[]", file);

Наконец, не виден в вашем вопросе, но смотрит на ваш кодовый блок. Это даст вам набор файлов:

document.getElementById(fileUploadButtonId).files;
blockquote>

Поскольку они являются файлами , использование кода для их преобразования в файлов делает нет смысла.

Вы можете упростить свой код:

var fileBag = new FormData(); 
var files = document.getElementById(fileUploadButtonId).files;
var arrayOfAllUploadedFiles = Array.from(files);
fileArray.forEach(file => fileBag.append("myname[]", file);
jQuery.ajax({
    url: "/foo",
    data: fileBag,
    processData: false,
    contentType: false,
});
POST.

Если вы передадите массив в jQuery ajax:

[111]

Тогда jQuery закодирует его как:

[112]

… поэтому PHP сгенерирует массив.

Однако значения должны быть вещами, которые понимает jQuery. Он не может обрабатывать FormData объектов.

Если вы хотите отправить объект FormData (что необходимо сделать для отправки файлов), вам нужно отправить вместо объекта:

[113] [1134 ] Вам нужно processData, чтобы он не пытался преобразовать объект FormData (то есть, чтобы он позволил XMLHttpRequest сделать это). Вам нужно contentType, чтобы остановить его, переопределяя один XMLHttpRequest, сгенерированный из объекта FormData.

Итак, чтобы отправить массив, мы возвращаемся к правилам, которые я описал выше. Вы сказали:

[114] blockquote>

Но чтобы получить массив, вам нужно имя, заканчивающееся на [].

[115]

Наконец, не виден в вашем вопросе, но смотрит на ваш кодовый блок. Это даст вам набор файлов:

[116] blockquote>

Поскольку они являются файлами , использование кода для их преобразования в файлов делает нет смысла.

Вы можете упростить свой код:

[117]POST данными в них.

Если имя поля в этих данных заканчивается на [], PHP поместит массив в

Будет ли typeof до и после преобразования одинаковым?

blockquote>

Поскольку «file» не является типом данных JavaScript. Все, что не является примитивным, является объектом.

[110]

2) Как я могу отправить массивы файловых объектов в бэкэнд? Есть ли другое решение?

blockquote>
  1. Понимать, как форматируются данные при отправке их по HTTP
  2. Понимать ограничения jQuery

Вы не можете отправить массив. Вы можете отправить только некоторый текст, который серверный код может собрать в массив.

Для обоих стандартных кодировок, поддерживаемых формами , PHP заполнит [118] данными в них.

Если имя поля в этих данных заканчивается на [119], PHP поместит массив в [1110].

Если вы передадите массив в jQuery ajax:

[111]

Тогда jQuery закодирует его как:

[112]

… поэтому PHP сгенерирует массив.

Однако значения должны быть вещами, которые понимает jQuery. Он не может обрабатывать FormData объектов.

Если вы хотите отправить объект FormData (что необходимо сделать для отправки файлов), вам нужно отправить вместо объекта:

[113] [1134 ] Вам нужно processData, чтобы он не пытался преобразовать объект FormData (то есть, чтобы он позволил XMLHttpRequest сделать это). Вам нужно contentType, чтобы остановить его, переопределяя один XMLHttpRequest, сгенерированный из объекта FormData.

Итак, чтобы отправить массив, мы возвращаемся к правилам, которые я описал выше. Вы сказали:

[114] blockquote>

Но чтобы получить массив, вам нужно имя, заканчивающееся на [].

[115]

Наконец, не виден в вашем вопросе, но смотрит на ваш кодовый блок. Это даст вам набор файлов:

[116] blockquote>

Поскольку они являются файлами , использование кода для их преобразования в файлов делает нет смысла.

Вы можете упростить свой код:

[117]POST.

Если вы передадите массив в jQuery ajax:

[111]

Тогда jQuery закодирует его как:

[112]

… поэтому PHP сгенерирует массив.

Однако значения должны быть вещами, которые понимает jQuery. Он не может обрабатывать FormData объектов.

Если вы хотите отправить объект FormData (что необходимо сделать для отправки файлов), вам нужно отправить вместо объекта:

[113] [1134 ] Вам нужно processData, чтобы он не пытался преобразовать объект FormData (то есть, чтобы он позволил XMLHttpRequest сделать это). Вам нужно contentType, чтобы остановить его, переопределяя один XMLHttpRequest, сгенерированный из объекта FormData.

Итак, чтобы отправить массив, мы возвращаемся к правилам, которые я описал выше. Вы сказали:

[114] blockquote>

Но чтобы получить массив, вам нужно имя, заканчивающееся на [].

[115]

Наконец, не виден в вашем вопросе, но смотрит на ваш кодовый блок. Это даст вам набор файлов:

[116] blockquote>

Поскольку они являются файлами , использование кода для их преобразования в файлов делает нет смысла.

Вы можете упростить свой код:

[117]
315
задан Drew Gaynor 12 November 2015 в 03:25
поделиться

4 ответа

Первый путь легче поддержать. Каждое объявление является отдельным оператором на одной строке, таким образом, можно легко добавить, удалить и переупорядочить объявления.

Со вторым путем это является раздражающим для удаления первого или последнего объявления, потому что они содержат var ключевое слово и точка с запятой. И каждый раз, когда Вы добавляете новое объявление, необходимо изменить точку с запятой в старой строке к запятой.

323
ответ дан Jeremy Ruten 23 November 2019 в 01:06
поделиться
var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;

более читаемо, чем:

var variable1 = "Hello World!",
    variable2 = "Testing...",
    variable3 = 42;

Но они делают то же самое.

11
ответ дан Kevin Crowell 23 November 2019 в 01:06
поделиться

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

14
ответ дан Brian Campbell 23 November 2019 в 01:06
поделиться

Обычно для организации используется один оператор var для каждой области . То, как все области действия следуют аналогичному шаблону, что делает код более читабельным. Вдобавок двигатель все равно «поднимает» их всех наверх. Таким образом, объединение ваших заявлений более точно имитирует то, что на самом деле произойдет.

33
ответ дан 23 November 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: