i made a
soap javascript to PHP test. You need PHP 5.x for soap server part.
if you leave the soap overhead it will also work with PHP 4.x
this is the code-snippet for crossbrowser
XMLHttpRequest
xmlhttpreq.js
var xmlhttp
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp=false
}
}
i guess that is what you needed.... :)
for others to complete an example,
this is the Soap XMLHttpRequest
transmission in javascript
client.htm
<head>
<script src='xmlhttpreq.js'></script
<script>
function xmit(data){
xmlhttp.open("POST", "url/server.php",true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
document.getElementById("sushi").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.setRequestHeader("Man", "GET url/server.php HTTP/1.1")
xmlhttp.setRequestHeader("MessageType", "CALL")
xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8")
xmlhttp.send(
"<"+"?xml version ='1.0' encoding ='UTF-8' ?"+">\n " +
"<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:ns1='urn:localhost-temperature'"+ "xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:SOAP-"+
"ENC='http://schemas.xmlsoap.org/soap/encoding/' SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>"+
"<SOAP-ENV:Body>"+
"<ns1:getTemp>"+
"<symbol xsi:type='xsd:string'>data</symbol>"+
"</ns1:getTemp>"+
"</SOAP-ENV:Body>"+
"</SOAP-ENV:Envelope>"
);
}
</script>
</head>
<body>
<input type='text' id='seg'>
<input type='button' onclick='xmit(document.getElementById("seg").value)' name='' value ='test'>
<div id='sushi'></div>
</body>
and here is the server side php code
server.php
<?php
$fp = fopen("trace_data.txt", "w+");
fwrite($fp, "[". $HTTP_RAW_POST_DATA . "]\n". print_r($GLOBALS, true));
fclose($fp);
function getTemp($zip) {
global $f;
$temp = rand(40,80);
return $temp;
}
$server = new SoapServer("temperature.wsdl");
$server->addFunction("getTemp");
$server->handle();
?>
and as last snippet the
wdsl definition for the soap example as
temperature.wsdl
<?xml version ='1.0' encoding ='UTF-8' ?>
<definitions name='Temperature'
targetNamespace='http://example.org/temperature'
xmlns:tns=' http://example.org/temperature '
xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
xmlns='http://schemas.xmlsoap.org/wsdl/'>
<message name='getTempRequest'>
<part name='symbol' type='xsd:string'/>
</message>
<message name='getTempResponse'>
<part name='Result' type='xsd:string'/>
</message>
<portType name='TempPortType'>
<operation name='getTemp'>
<input message='tns:getTempRequest'/>
<output message='tns:getTempResponse'/>
</operation>
</portType>
<binding name='TempBinding' type='tns:TempPortType'>
<soap:binding style='rpc'
transport='http://schemas.xmlsoap.org/soap/http'/>
<operation name='getTemp'>
<soap:operation soapAction='urn:localhost-temperature#getTemp'/>
<input>
<soap:body use='encoded' namespace='urn:localhost-temperature'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</input>
<output>
<soap:body use='encoded' namespace='urn:localhost-temperature'
encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
</output>
</operation>
</binding>
<service name='TemperatureService'>
<port name='TempPort' binding='TempBinding'>
<soap:address location='http://www.umweg.ch/soap/server.php'/>
</port>
</service>
</definitions>
i took the infos from:
http://jibbering.com/2002/4/httprequest.html
http://www.devx.com/webdev/Article/22338/0/page/4
http://www.zend.com/php5/articles/php5-SOAP.php?article=php5-SOAP&kind=php5&id=5085&open=1&anc=0&view=1
and in the very short way:
client2.htm
<script src='xmlhttpreq.js'></script
<script>
function xmit(data){
xmlhttp.open("POST", "url/server2.php",true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
document.getElementById("sushi").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.setRequestHeader("Man", "GET url/server2.php?data="+data+" HTTP/1.1")
xmlhttp.send("");
}
</script>
server2.php
<?php
import_request_variables("gp", "d_");
echo $d_data;
?>