[AJAX] formulier posten

Status
Niet open voor verdere reacties.

pankmeister

Gebruiker
Lid geworden
15 jul 2008
Berichten
106
Met volgende javascript code laad ik de inhoud van de desbetreffende pagina in een div:

Code:
<script type="text/javascript">
var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadedobjects=""
var rootdomain="http://"+window.location.hostname
var bustcacheparameter=""

function ajaxpage(url, containerid){
	var page_request = false
	if(window.XMLHttpRequest) // if Mozilla, Safari etc
		page_request = new XMLHttpRequest()
	else if (window.ActiveXObject){ // if IE
		try {
		page_request = new ActiveXObject("Msxml2.XMLHTTP")
		} 
		catch (e){
			try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch (e){}
		}
	}else
		return false
		page_request.onreadystatechange=function(){
			loadpage(page_request, containerid)
		}
		if(bustcachevar) //if bust caching of external page
		bustcacheparameter=(url.indexOf("?")!=-1)? "&amp;"+new Date().getTime() : "?"+new Date().getTime()
		page_request.open('GET', url+bustcacheparameter, true)
		page_request.send(null)
	}

function loadpage(page_request, containerid){
	if(page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
	document.getElementById(containerid).innerHTML=page_request.responseText
}
</script>

De inhoud word gehaald uit een aparte php pagina die mbv een get waarde weet welke pagina hij moet teruggeven.
Nu lukt het mij maar niet om in de gastenboek pagina een bericht te posten zonder dat de hele pagina gepost word.
Iemand die mij op weg kan helpen?
 
Je kunt met Ajax een post request inelkaar knutselen

PHP:
function handleStateChange()
{

}

var1 = encodeURIComponent(var1);
var2 = encodeURIComponent(var2);
var query = var1+"&"+var2;

xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-Length", query.length);
xmlHttp.send(query);
 
Je kunt met Ajax een post request inelkaar knutselen

PHP:
function handleStateChange()
{

}

var1 = encodeURIComponent(var1);
var2 = encodeURIComponent(var2);
var query = var1+"&"+var2;

xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-Length", query.length);
xmlHttp.send(query);


Hoe post ik ze dan? Want de post acties staan onder de get waarde van de andere pagina :confused:
 
Ik heb volgend scriptje gevonden

HTML:
<html>
<head>
</head>
<body>

<script type="text/javascript" language="javascript">
   var http_request = false;
   function makePOSTRequest(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('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   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 poststr = "post1=" + encodeURI( document.getElementById("post1").value ) +
                    "&post2=" + encodeURI( document.getElementById("post2").value );
      makePOSTRequest('post.php', poststr);
   }
</script>


<form action="javascript:get(document.getElementById('myform'));" name="myform" id="myform">
	<textarea id="post1">my test
        1
        2
        3
    </textarea>
    <input type="text" id="post2" value="testveld" />
<input type="button" name="button" value="Submit" onClick="javascript:get(this.parentNode);">
</form>

<hr>
<span name="myspan" id="myspan"></span>
<hr>
</body>
</html>

Maar probleem is hier dat

Code:
function get(obj) {
      var poststr = "post1=" + encodeURI( document.getElementById("post1").value ) +
                    "&post2=" + encodeURI( document.getElementById("post2").value );
      makePOSTRequest('post.php', poststr);
   }
</script>


<form action="javascript:get(document.getElementById('myform'));" name="myform" id="myform">
	<textarea id="post1">my test
        1
        2
        3
    </textarea>
    <input type="text" id="post2" value="testveld" />
<input type="button" name="button" value="Submit" onClick="javascript:get(this.parentNode);">
</form>

<hr>
<span name="myspan" id="myspan"></span>
<hr>

Pagina afhankelijk is en dus met de get oproep moet worden geladen.
Echter als ik dit doe post hij niet meer :(
Weet iemand hoe ik mijn 2 scripts moet combineren?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan