Ich fang zwar gerade erst mit AJAX an, aber versuch mal die zwei folgenden Funktionen zu verwenden:
HTML-Code:
var xmlHttp = false;
/** AJAX functions **/
// constants
var REQUEST_GET = 0;
var REQUEST_POST = 2;
var REQUEST_HEAD = 1;
var REQUEST_XML = 3;
/**
* instantiates a new xmlhttprequest object
*
* @return xmlhttprequest object or false
*/
function getXMLRequester() {
var xmlHttp = false;
// try to create a new instance of the xmlhttprequest object
try {
// Internet Explorer
if ( window.ActiveXObject ) {
for( var i = 5; i; i-- ) {
try {
// loading of a newer version of msxml dll (msxml3 - msxml5) failed
// use fallback solution
// old style msxml version independent, deprecated
if( i == 2 )
xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" );
else // try to use the latest msxml dll
xmlHttp = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
break;
}
catch( excNotLoadable ) {
xmlHttp = false;
}
}
} else if( window.XMLHttpRequest ) { // Mozilla, Opera und Safari
xmlHttp = new XMLHttpRequest();
}
} catch( excNotLoadable ) { // loading of xmlhttp object failed
xmlHttp = false;
}
return xmlHttp;
}
/**
* sends a http request to server
*
* @param strSource, String, datasource on server, e.g. data.php
* @param strData, String, data to send to server, optionally
* @param intType, Integer,request type, possible values: REQUEST_GET, REQUEST_POST, REQUEST_XML, REQUEST_HEAD default REQUEST_GET
* @param strData, Integer, ID of this request, will be given to registered event handler onreadystatechange', optionally
*
* @return String, request data or data source
*/
function sendRequest( strSource, strData, intType, intID ) {
if( !strData )
strData = '';
// default type (0 = GET, 1 = xml, 2 = POST )
if( isNaN( intType ) )
intType = 0; // GET
// previous request not finished yet, abort it before sending a new request
if( xmlHttp && xmlHttp.readyState ) {
xmlHttp.abort( );
xmlHttp = false;
}
// create a new instance of xmlhttprequest object
// if it fails, return
if( !xmlHttp ) {
xmlHttp = getXMLRequester( );
if( !xmlHttp )
return;
}
// parse query string
if( intType != 1 && ( strData && strData.substr( 0, 1 ) == '&' || strData.substr( 0, 1 ) == '?' ) )
strData = strData.substring( 1, strData.length );
// data to send using POST
var dataReturn = strData ? strData : strSource;
switch( intType ) {
case 1: // xml
strData = "xml=" + strData;
case 2: // POST
// open the connection
xmlHttp.open( "POST", strSource, true );
xmlHttp.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
xmlHttp.setRequestHeader( 'Content-length', strData.length );
break;
case 3: // HEAD
// open the connection
xmlHttp.open( "HEAD", strSource, true );
strData = null;
break;
default: // GET
// open the connection
var strDataFile = strSource + (strData ? '?' + strData : '' );
xmlHttp.open( "GET", strDataFile, true );
strData = null;
}
// set onload data event-handler
xmlHttp.onreadystatechange = new Function( "", "processResponse(" + intID + ")" );
// send request to server
xmlHttp.send( strData ); // param = POST data
return dataReturn;
}
Lesezeichen