x

Einloggen

Hast du noch keinen Account? Jetzt registrieren!

Праводка Multipart / Формаў-дадзеных ад XMLHttpRequest

Original on http://kaply.com/weblog/
Пераклад на беларускую мову Patricia Clausnitzer


Я працую над дадаць-на, дзе я ёсць неабходнасць POST JSON дадзеных на серверы. Нажаль, JSON утрымоўвае амперсанд, так, каб выкарыстоўваць POST, я б для кадавання дадзеных у пэўным сэнсе, што сервер можа расшыфраваць. Гэта здавалася дадатковай непатрэбнай працы для мяне. Я вырашыў выкарыстоўваць "складовага / форма дадзеных" загаловак, які дазволіў бы мне адправіць дадзеныя ў нязменным выглядзе. Нажаль, дакументацыя па гэтай нагодзе адсутнічаюць. Так што пасада толькі змірыцца ўзор кода пра тое, як зрабіць гэта ў выпадку, калі хто яшчэ ў ёй мае патрэбу. У гэтым выпадку, я проста перадачы дадзеных = Foo Foo дзе гэта JSON.

var xhr = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance
(Components.interfaces.nsIXMLHttpRequest);
xhr.open("POST", url, true);
var boundary = '---------------------------';
boundary += Math.floor(Math.random()*32768);
boundary += Math.floor(Math.random()*32768);
boundary += Math.floor(Math.random()*32768);
xhr.setRequestHeader("Content-Type", 'multipart/form-data; boundary=' + boundary);
var body = '';
body += '--' + boundary + '\r\n' + 'Content-Disposition: form-data; name="';
body += "data";
body += '"\r\n\r\n';
body += JSON.stringify(JAVASCRIPT OBJECT);
body += '\r\n'
body += '--' + boundary + '--';
xhr.setRequestHeader('Content-length', body.length);
xhr.onload = function() {
}
xhr.send(body);

Існавалі сервер не змены, якія неабходна на ўсіх. PHP апрацоўваюцца дадзеныя гэтак жа, як калі б гэта быў "application/x-www-form-urlencoded" POST.