//IN JS
function serialize(form, postData = null, widget = null, alert = null, redirect = null) {
var data;
var formData = new FormData();
if (!form || form.node.nodeName !== "FORM") {
return;
}
var i, j, q = []; // not all used I modified ready form handle code to use FormData.
for (i = form.elements.length - 1; i >= 0; i = i - 1) {
if (form.elements[i].name === "") {
continue;
}
switch (form.elements[i].nodeName) {
case 'INPUT':
switch (form.elements[i].type) {
case 'text':
case 'hidden':
case 'password':
case 'button':
case 'reset':
case 'submit':
formData.append(form.elements[i].name,form.elements[i].value );
break;
case 'checkbox':
case 'radio':
if (form.elements[i].checked) {
}
break;
case 'file':
formData.append(form.elements[i].name,form.elements[i].files[0], form.elements[i].files[0].name);
break;
}
break;
case 'TEXTAREA': break;
case 'SELECT':
switch (form.elements[i].type) {
case 'select-one': break;
case 'select-multiple':
for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) {
if (form.elements[i].options[j].selected) {
}
}
break;
}
break;
case 'BUTTON':
switch (form.elements[i].type) {
case 'reset':
case 'submit':
case 'button':
formData.append(form.elements[i].name, form.elements[i].value);
break;
}
break;
}
}
formData.append(postData,""); //Some additional keywords with empty value nothing special
//I could do it also like this to ensure I posted but nothing works for file input if I change it to text that is posted.
//formData.append("imgfile", document.getElementById("imgfile").files[0]);
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (this.readyState == 4 && this.status == 200)
{
if(this.responseText == 0)
{
var t = document.createTextNode("no response text");
if(widget!=null){widget.appendChild(t);}
//if(redirect!=null){window.location.replace(redirect);}else{window.location.replace("index.php");}
}
else
{var t = document.createTextNode(this.responseText);
if(widget!=null){widget.appendChild(t);}
}
}
};
xhttp.open("POST", "ajax.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(formData);
}
//IN PHP
if(isset($_POST['postIdea'])){ //There were some others but I just used one here.
echo basename($_FILES['imgfile']['name']);
}
as a response text I get “undefined index imgfile …” //file input name and id is “imgfile” and it is located in form. Can anyone explain what am I missing here ?