FormData
هو أفضل صديق لمستخدِم طلبات البيانات عبر XML، وسيتم ترقيته في الإصدار 50 من Chrome.
نحن بصدد إضافة طرق تتيح لك فحص عناصر FormData
أو تعديلها بعد إجراء التغييرات.
يمكنك الآن استخدام get()
وdelete()
وأدوات المساعدة في التكرار مثل entries
وkeys
والمزيد. (اطّلِع على القائمة الكاملة).
إذا لم تكن تستخدِم FormData، يمكنك استخدام هذه الواجهة البسيطة المتوافقة جيدًا التي تتيح لك إنشاء نموذج افتراضي آليًا وإرساله إلى مكان بعيد باستخدام window.fetch()
أو XMLHttpRequest.send(formData)
.
لمعرفة بعض الأمثلة، يُرجى الاطّلاع على ما يلي.
تحليل النماذج الفعلية باحترافية
يمكن إنشاء FormData
من نموذج HTML حقيقي، مع أخذ لقطة لجميع قيمه الحالية.
ومع ذلك، كان الجسم غير شفاف تمامًا. كل ما كان بإمكانك فعله هو إرسالها بدون تغيير إلى خادم.
يمكنك الآن استخدامها وتعديلها وتغييرها وتصغيرها وتحميلها:
function sendRequest(theFormElement) {
var formData = new FormData(theFormElement);
formData.delete("secret_user_data"); // don't include this one!
if (formData.has("include_favorite_color")) {
formData.set("color", userPrefs.getColor());
}
// log all values like <input name="widget">
console.info("User selected widgets", formData.getAll("widget"));
window.fetch(url, {method: 'POST', body: formData});
}
يمكنك أيضًا إرسال FormData
من خلال XMLHttpRequest
الأقدم:
var x = new XMLHttpRequest();
x.open('POST', url);
x.send(formData);
لا تتخلّص من FormData
إذا كنت بصدد إنشاء FormData
من الصفر، قد يكون من المزعج عدم التمكّن من إعادة استخدامه، خاصةً إذا كنت قد قضّيت الكثير من الوقت في إنشاء هذه الحقول.
بما أنّ الطريقتَين window.fetch()
وXMLHttpRequest.send()
تلتقطان لقطة FormData
، يمكنك الآن إعادة استخدام عملك وتعديله بأمان.
راجِع هذا المثال:
// append allows multiple values for the same key
var formData = new FormData();
formData.append("article", "id-123");
formData.append("article", "id-42");
// send like request
formData.set("action", "like");
window.fetch(url, {method: 'POST', body: formData});
// send reshare request
formData.set("action", "reshare"); // overrides previous "action"
window.fetch(url, {method: 'POST', body: formData});