JSFiddle - React, Tailwind, and code Playground

by Ivan Vasilyev

JavaScript

var DATA_URL = 'http://local.ticketscloud.org/v1/services/whoami?fields-schema=id,email,name,partners%7Bid,name,roles,status,created_at,showroom,allow_other_ps%7D,mobile,token,legals%7Bid%7D,referrals';
var form = document.forms.authForm;

form.addEventListener('submit', function (e) {
	var formData = new FormData(document.forms.authForm); //Зачем тебе FormData, если нужно отсылать JSON? 
	var xhr = new XMLHttpRequest ();
	xhr.open('POST', DATA_URL);
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");// Соответственно, Content-Type должен быть "application/json"
  xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
	xhr.onreadystatechange = function () {
		if (xhr.readyState === 4) {
			var status = xhr.status;

			if ((status >= 200 && status < 300) || status === 304) {
				alert(xhr.responseText);
			} else {
				console.log('Что-то не так')
			}
		}
	};
  
	xhr.onload = function () {
		var result = JSON.parse(xhr.responseText);
		var user = result['user'];          // тут можно (и нужно для однообразия) использовать dot-нотацию
		var partner = result['partner'];
		var last = result['last-partner'];
		var auth = result['auth-token'];
		localStorege.setItem('user', user);
		localStorege.setItem('partner', partner);
		localStorege.setItem('last-partner', last);
		localStorege.setItem('auth-token', auth);

	}
  
	xhr.send('param=' + JSON.stringify(formData)) //тут ты отыслаешь параметр param. А нужно, чтобы уходило два параметра: email и password
  
});

/* 

Запросы можно тестировать, отсылая их на тот же домен, на котором ты тестируешь, чтобы POST уходил таки, а не за запрос OPTIONS. а тестировать обработку ответа можно просто запустив функцию обработки ответа на фейковыйх данных. Вот что придет тебе с сервера при успешном логине:

{"name": null, "partners": [{"created_at": "2017-02-25T12:19:51.894000+00:00", "name": "\u0421\u0443\u043f\u0435\u0440 \u041c\u0435\u0433\u0430...