I am using XMLHttpRequest to read a text file uploaded to our website and add the text into an email. It always succeeds on the second run, but not the first. The readyState does not reach 4 until after the email is opened and closed, so the text appears the second time the email is opened. (sendEmail function runs when a button is pressed). I suspect when the email opens the second time, it is getting the first round of data. Is it possible to make this run on the first request?
function sendEmail() {
var greeting = "email greeting ";
var email = "mailto:info@email.com";
var subject = "?subject=Subject";
var body = "&body=";
var code = "some type of model code";
getPartNumber(code);
var pn = document.getElementById("part_number").innerHTML;
window.location.href = email + subject + body + greeting + code + "." + "%0A" + pn;
}
function getPartNumber(code) {
//file address is chosen based on what "code" is, but is a test file for now
var file_address = "http://[address where file is located].txt";
var data = new XMLHttpRequest();
data.onreadystatechange = function () {
if(data.readyState == 4 && data.status == 200) {
document.getElementById("part_number").innerHTML = data.responseText;
}
//for debugging purposes
//readyState reaches 2 and status reaches 200 first time email is opened
//readyState reaches 4 and status reaches 200 after email is closed
alert("ready state " + data.readyState + " status " + data.status);
};
data.open("GET", file_address, true);
data.send(null);
}