我想离开“jQuery”世界'并使用更多的香草JS。不仅仅是为了调情,我还决定使用Typescript来增加优势;但问题出在这里:
在我发送帖子请求之前,我需要循环使用这些元素。如果没有打字稿,我可能会使用formDataElement.entries()
之类的东西(或只是检查1个元素formDataElement.getAll('keyForMyFirstEntry')
。
但是PhpStorm和编译器告诉我,有一些属性,比如' getAll'或者'条目'
V2A-16:area51 v2a$ tsc --out public/js/d3-fileupload.vanilla.js module/Application/assets/ts/d3-vanilla-fileupload.ts
module/Application/assets/ts/d3-vanilla-fileupload.ts(274,12): error TS2339: Property 'getAll' does not exist on type 'FormData'.
V2A-16:area51 v2a$ tsc --out public/js/d3-fileupload.vanilla.js module/Application/assets/ts/d3-vanilla-fileupload.ts
module/Application/assets/ts/d3-vanilla-fileupload.ts(274,36): error TS2339: Property 'entries' does not exist on type 'FormData'.
所以这是我的问题:
代码:
function FileSelectHandler($event) {
let $files = $event.target.files || $event.dataTransfer.files;
let $targetName = $event.target.getAttribute('data-related-element');
let $relatedElement = document.querySelectorAll('[name="' + $targetName + '"]');
let $uri = $relatedElement[0].getAttribute('data-upload-uri');
let $xhr = new ajax();
if ($files) {
[].forEach.call(
$files,
function ($file) {
$data.append('file[]', $file);
}
);
}
$xhr.post(
$uri,
$data
);
}
class ajax {
[...]
public post(
$url: string,
$data: FormData,
$callback: (text: any) => any = function() {},
$async: any = true
) {
let $query = [];
if ($data !== undefined) {
/*
* Please Help... doesn't work
*/
for (let $key in $data.entries()) {
$query.push(encodeURIComponent($key) + '=' + encodeURIComponent($data[$key]));
}
}
this.send($url, $callback, 'POST', $query.join('&'), $async)
}
}
答案 0 :(得分:0)
好的 - 经过一段时间和一些新的白发:
但是 - 也许有一个解决方案。我想为每个对象做一点预览,并且通过这个补救措施,我需要为每个可用项目保留每个模板。在这种情况下,顶部代码中的post-circling option
就好了。