milo3169
Programmer
- May 2, 2007
- 42
I'm a newbie to AJAX and Javascript. I have a simple form that is being submitted through AJAX. I got it working where it will call my PHP file and it would run the PHP script. After that I did a W3C validation and fixed the errors that it came up with, but now my form doesn't work. I think I came to the conclusion that the form is not submitting the values of the text boxes. I ran some tests in the Javascript code by putting some alerts within the code. I put an alert "alert(obj.childNodes.type);" after the FOR loop wanting to see the "type", but they come up "Undefined". I'm not sure if I did something when I validated the page or what. Can somebody help me to see what I'm doing wrong here? It was working great before. The PHP validation was working the way I wanted to and it would submit just fine.
Javascript Code
HTML Code. The HTML code is being echoed in PHP.
Javascript Code
Code:
var http_request = false;
function makeRequest(url, parameters) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
// set type accordingly to anticipated content type
//http_request.overrideMimeType('text/xml');
http_request.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('GET', url + parameters, true);
http_request.send(null);
}
function alertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
//alert(http_request.responseText);
result = http_request.responseText;
document.getElementById('myspan').innerHTML = result;
} else {
alert('There was a problem with the request.');
}
}
}
function get(obj) {
var getstr = "?";
for (i=0; i<obj.childNodes.length; i++) {
if (obj.childNodes[i].tagName == "INPUT") {
if (obj.childNodes[i].type == "text") {
getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
}
if (obj.childNodes[i].type == "checkbox") {
if (obj.childNodes[i].checked) {
getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
} else {
getstr += obj.childNodes[i].name + "=&";
}
}
if (obj.childNodes[i].type == "radio") {
if (obj.childNodes[i].checked) {
getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
}
}
}
if (obj.childNodes[i].tagName == "SELECT") {
var sel = obj.childNodes[i];
getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
}
}
makeRequest('email_subscription/register_email.php', getstr);
}
HTML Code. The HTML code is being echoed in PHP.
Code:
<form action=\"javascript:get(document.getElementById('myform1'));\" id=\"myform1\">
<p><label class=\"label\" for=\"fname\">First name</label>
<input id=\"fname\" type=\"text\" name=\"first\" /></p>
<p><label class=\"label\" for=\"lname\">Last Name</label>
<input type=\"text\" id=\"lname\" name=\"last\" /></p>
<p><label class=\"label\" for=\"email\">Email</label>
<input id=\"email\" type=\"text\" name=\"emailaddr\" /></p>
<p>
<input type=\"button\" name=\"button1\" value=\"Sign Up\" onclick=\"javascript:get(this.parentNode);\" />
</p>
</form>