1) idem se le chiamate sono sincrone o meno...
2) uso get
3) Firefox ma instanzio l'oggetto xmlHttpRequest a seconda del browser
Eccoti parte del codice (il "core"):
...premessa: par è un oggetto che ho creato io: contiene un array associativo con i parametri che mi servono, e il metodo encodeParams() mi trasforma l'array in un'unica stringa formattata per essere mandata in get (tutto provato e funzionante),in base ad altri parametri invio un certo numero di richieste, quindi :
...
for (var j=10; j<=i; j+=10){
par.changeParam("numResult",j);
par.changeParam("idReq",(j/10));
r = par.encodeParams();
sendReq('doGoogleSearch',r,j);
}
...
----> XMLHttpRequest, creazione ed invio richiesta <----
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
function sendReq(action,param,i) {
alert("sending request "+(i/10));
http.open('get','rpc.php?action='+action+param,tru e);
http.onreadystatechange = handleResponse;
http.send(null);
}
function handleResponse() {
alert("http.readyState: "+http.readyState);
if(http.readyState == 4){
var response = http.responseText;
document.getElementById("content").innerHTML += response;
}
}
----> rpc.php <----
<?php
include("search.util.php");
if ($_REQUEST['action']=='doGoogleSearch'){
$end = '@end@'.$_REQUEST['idReq'].'@end@';
settype($_REQUEST['startFrom'],"integer");
settype($_REQUEST['numResult'],"integer");
settype($_REQUEST['filter'],"boolean");
settype($_REQUEST['adultContent'],"boolean");
$res = "";
$params = array(
'Googlekey' => 'DeQ3bddQFHIULlX6C7BBVBwtQ/yFUOVq', // Google license
'queryStr' => $_REQUEST['queryStr'], // termine di ricerca digitato
'startFrom' => $_REQUEST['numResult']-10, // indice di inizio risultati
'maxResults' => 10, // 10 = numero massimo consentito
'filter' => $_REQUEST['filter'], // rimuove risultati simili
'restrict' => '', // restrict by topic
'adultContent' => $_REQUEST['adultContent'], // filtro adult content
'language' => $_REQUEST['language'], // restrict by language
'iencoding' => 'utf8', // input encoding
'oencoding' => 'utf8' ); // output encoding
$MyResult = doSearch($params);
$res = showSearchResult($MyResult);
echo $end.$res;
}
----> search.util.php <----
<?php
include ("nusoap.php");
function doSearch($params)
{
$soapclient = new soapclient("http://api.google.com/search/beta2");
$Result = $soapclient->call("doGoogleSearch", $params, "urn:GoogleSearch", "urn:GoogleSearch");
return $Result;
}
function showSearchResult($Result)
{
....istruzioni per la stampa dei risultati...
(ometto il codice perchè è solo una serie di echo, che è poco interessante, ma funziona...)
}
?>