• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 326
  • Last Modified:

posting to php through ajax

I am stumpped on posting variables to a php file.
From my html I call 'calledFromHTMLform()'.  This file generates an ajax variable and posts to a file called 'myPHPfile.php'.
The php file sends an email. The email is successfully sent but I cannot read any of the posted variables.
In the following code, the $message variable contains nothing.
Any input as to what I am missing?

--------------------------------------------------------------------------------
function calledFromHTMLform() { 
	var ajaxVar = getAjaxRequestVariable(); 
 
	ajaxVar.onreadystatechange = function() { 
		if(ajaxVar.readyState == 4) { 
			var myResponse = ajaxVar.responseText; 
		} 
	} 
	ajaxVar.open("POST", "myPHPfile.php", true); 
	ajaxVar.send('name=myname&username=myusername'); 
} 
--------------------------------------------------------------------------------
function getAjaxRequestVariable() { 
	try { // Opera 8.0+, Firefox, Safari 
		ajaxRequest = new XMLHttpRequest(); 
	} catch (e) { // Internet Explorer Browsers 
		try { 
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
		} catch (e) { 
			try { 
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
			} catch (e) { // Something went wrong 
				alert("Your browser broke!"); 
				return false; 
			} 
		} 
	} 
	return ajaxRequest; 
} 
--------------------------------------------------------------------------------
<?php
	$email = 'you@domainname.com';
	$subject = 'This is the subject';
	$message = $_POST["name"]; 
	$from = "me@domainname.com";
	$headers = "From: $from";
 
	if(mail($email,$subject,$message,$headers)) {
		echo "Thank you for sending email";
	} else {
		echo "Can't send email to $email";
	}
?>
--------------------------------------------------------------------------------

Open in new window

0
pconder
Asked:
pconder
  • 2
1 Solution
 
LinuxNubbCommented:
Are you certain these variables are being populated correctly?

ajaxVar.send('name=myname&username=myusername');

Dump them to the screen to ensure they have data.
0
 
pconderAuthor Commented:
I did that already. The string going to the post looks good (I think). The following is a sample string being sent to the post from the actual code - not the stripped and hard coded code that I posted with the question:
------------------------------------------------
name=pc&username=myUser
------------------------------------------------
0
 
Pantalaim0nCommented:
Try adding this before ajaxVar.send(...). Replace lengthOfTheQueryString with an appropriate value.

ajaxVar.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajaxVar.setRequestHeader('Content-Length', lengthOfTheQueryString);

Open in new window

0
 
pconderAuthor Commented:
Someone also recomended that I add:
ajaxVar.setRequestHeader("Connection", "close");
after the two lines you indicated.  Works great. Thanks.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now