Đây là giải pháp bạn đang tìm kiếm. :-]
Tôi giả sử những gì bạn cuối cùng đang cố gắng làm là lưu trữ các giá trị [trong đó có thể có bội số]. Ngoài ra, bạn có thể đang cố gắng hiển thị chúng cho người dùng thay vì hiển thị văn bản mặc định có nội dung "4 tệp được chọn" chẳng hạn. Ngoài ra, như bạn đã chỉ ra, bạn muốn có thể lập trình thao tác một cách chính xác danh sách các tệp đã chọn.
Vấn đề là không thể được thực hiện theo cách bạn đang tiếp cận nó. Đó là bởi vì phần tử được bảo vệ và đường dẫn tệp đầy đủ sẽ không bao giờ có thể truy cập được. Do đó, khi bạn cố gắng lấy các giá trị, chúng sẽ chỉ là tên tệp nhưng không phải là đường dẫn tệp đầy đủ. Ví dụ: nếu bạn đã chọn một tệp có tên là Dog.jpg từ máy tính để bàn của bạn, trình duyệt sẽ biết đường dẫn là "Tệp: \ C: \ Windows \ Users \ SomeUser \ Desktop \ Dog.jpg" nhưng khi bạn cố gắng truy xuất nó - Bạn sẽ chỉ nhận được giá trị "Dog.jpg". Chỉ với tên tệp, bạn không thể xây dựng lại các đường dẫn tệp đầy đủ và do đó bạn không thể làm bất cứ điều gì có ý nghĩa với chúng liên quan đến việc cuối cùng gửi chúng để được máy chủ xử lý.
Do đó, tôi đã tạo ra một giải pháp cho bạn sử dụng một nút tải lên tệp. Khi người dùng chọn một tệp, nó sẽ thêm một tệp khác khi cần thiết. Ngoài ra, khi có nhiều hơn một tệp được chọn, người dùng có thể chọn xóa bất kỳ tệp nào trong số chúng khi cần.
Bạn sẽ xử lý các tệp đã chọn trên máy chủ của mình theo cách sau ... Khi dữ liệu biểu mẫu được gửi đến hành động biểu mẫu [trong trường hợp này là "/sendFiles"], mã bên máy chủ của bạn sẽ xử lý dữ liệu đến cho từng phần tử biểu mẫu. Trong ví dụ dưới đây, các phần tử đầu vào của các tệp loại [có thuộc tính tên "MyFiles"] sẽ được gửi dưới dạng mảng, trong đó mỗi phần tử mảng sẽ chứa dữ liệu tệp của từng dữ liệu được chỉ định bởi người dùng.
Mã jQuery:
var getUploadFragment = function[]{return $['']};
$[document].ready[function[]{
$["#my_form"]
.append[getUploadFragment[]]
.on["change", "input[name=myfiles]:last", function[]{
var lastFileContainer = $[".files-cont:last"];
lastFileContainer.after[getUploadFragment[]];
if[$[".files-cont"].length > 1]{
lastFileContainer.append['[Remove]'];
}
}]
.on["click", ".remove", function[]{
if[$[".files-cont"].length > 1]{
$[this].parent[].remove[];
}else{
$[this].remove[];
}
}];
}];
với hình thức sau được xác định trong cơ thể:
Chuyển đổi một chuỗi thành một ngày, sử dụng hàm reviver:
const text = '{"name": "john", "sinh": "1986-12-14", "thành phố": "New York"}'; const obj = json.parse [text, function [key, value] {& nbsp; if [key == "sinh"] {& nbsp; & nbsp; & nbsp; trả về ngày mới [giá trị]; & nbsp;} other {& nbsp; & nbsp; giá trị trả về; & nbsp; & nbsp;}}];
Chức năng phân tích cú pháp
Ví dụ - Phân tích cú pháp JSON
Hãy tưởng tượng chúng tôi đã nhận được văn bản này từ một máy chủ web:
'{"Tên": "John", "Tuổi": 30, "Thành phố": "New York"}'
Sử dụng chức năng JavaScript JSON.parse[]
để chuyển đổi văn bản thành đối tượng JavaScript:
const obj = json.parse ['{"name": "john", "tuổi": 30, "thành phố": "new york"}'];
Hãy chắc chắn rằng văn bản ở định dạng JSON, nếu không bạn sẽ gặp lỗi cú pháp.
Sử dụng đối tượng JavaScript trong trang của bạn:
Thí dụ
document.getEuityById ["demo"]. Internhtml = obj.Name;
document.getElementById["demo"].innerHTML = obj.name;
Hãy tự mình thử »
Mảng là json
Khi sử dụng JSON.parse[]
trên JSON có nguồn gốc từ một mảng, phương thức sẽ trả về một mảng JavaScript, thay vì đối tượng JavaScript.
Thí dụ
const text = '["Ford", "BMW", "Audi", "Fiat"]';
const myArr = JSON.parse[text];
Hãy tự mình thử »
Mảng là json
Khi sử dụng JSON.parse[]
trên JSON có nguồn gốc từ một mảng, phương thức sẽ trả về một mảng JavaScript, thay vì đối tượng JavaScript.
const text = '["ford", "bmw", "audi", "fiat"]'; const myarr = json.parse [văn bản];
Ngoại lệ
Ngày phân tích cú pháp
Thí dụ
Convert a string into a date:
document.getEuityById ["demo"]. Internhtml = obj.Name;
const obj = JSON.parse[text];
obj.birth = new Date[obj.birth];
document.getEuityById ["demo"]. Internhtml = obj.name + "," + obj.birth;
Hãy tự mình thử »
Hoặc, bạn có thể sử dụng tham số thứ hai, của hàm JSON.parse[]
, được gọi là Reviver.
Tham số Reviver là một hàm kiểm tra từng thuộc tính, trước khi trả về giá trị.
Thí dụ
Chuyển đổi một chuỗi thành một ngày, sử dụng hàm reviver:
const text = '{"name": "john", "sinh": "1986-12-14", "thành phố": "New York"}'; const obj = json.parse [text, function [key, value] {& nbsp; if [key == "sinh"] {& nbsp; & nbsp; & nbsp; trả về ngày mới [giá trị]; & nbsp;} other {& nbsp; & nbsp; giá trị trả về; & nbsp; & nbsp;}}];
const obj = JSON.parse[text, function [key, value] {
if [key == "birth"] {
return new Date[value];
} else {
return value;
}
}];
document.getEuityById ["demo"]. Internhtml = obj.name + "," + obj.birth;
Hãy tự mình thử »
Hoặc, bạn có thể sử dụng tham số thứ hai, của hàm JSON.parse[]
, được gọi là Reviver.
Tham số Reviver là một hàm kiểm tra từng thuộc tính, trước khi trả về giá trị.
Thí dụ
Chuyển đổi một chuỗi thành một ngày, sử dụng hàm reviver:
Thí dụ
Chuyển đổi một chuỗi thành một ngày, sử dụng hàm reviver:
const text = '{"name": "john", "sinh": "1986-12-14", "thành phố": "New York"}'; const obj = json.parse [text, function [key, value] {& nbsp; if [key == "sinh"] {& nbsp; & nbsp; & nbsp; trả về ngày mới [giá trị]; & nbsp;} other {& nbsp; & nbsp; giá trị trả về; & nbsp; & nbsp;}}];
const obj = JSON.parse[text];
obj.age = eval["[" + obj.age + "]"];
Chức năng phân tích cú pháp
Hãy tự mình thử »
Hoặc, bạn có thể sử dụng tham số thứ hai, của hàm JSON.parse[]
, được gọi là Reviver.