|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2005
Messaggi: 579
|
[ajax - php] errore ajax.status = 0
Ho letto un po' su Ajax e volevo fare uno script che si collega a un server per leggere un testo o ricevere il valore di una variabile.
Lato client ho: Codice:
<script type="text/javascript" src="utility.js"></script>
<script type="text/javascript">
var doc = document, win = window;
function Ricevi() {
caricaTesto('indirizzoMioServer/public/Files/PHP/content.php&action=art');
function caricaTesto(nomeFile) {
// assegnazione oggetto XMLHttpRequest con controllo browser:
ajax = assegnaXMLHttpRequest();
// assegnazione elemento del documento
elemento = prendiElementoDaId("p_francesco");
// se l'oggetto XMLHttpRequest non è nullo
if(ajax) {
// impostazione richiesta asincrona in GET
// del file specificato
ajax.open("get", nomeFile, true);
// rimozione dell'header "connection" come "keep alive"
ajax.setRequestHeader("connection", "close");
// impostazione controllo e stato della richiesta
ajax.onreadystatechange = function() {
// verifica dello stato
if(ajax.readyState === readyState.COMPLETATO) {
// verifica della risposta da parte del server
if(statusText[ajax.status] === "OK")
// operazione avvenuta con successo
elemento.innerHTML = ajax.responseText;
else {
// errore di caricamento
elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
}
}
}
}
// invio richiesta
ajax.send(null);
} //end carica testo
}
</script>
</head>
<body>
<div >
<p onClick="Ricevi();" id="p_francesco">
prova
</p>
<div>
</body>
</html>
Codice:
<?php
switch($_REQUEST['action']) {
case 'art': $content = "art";break;
case 'bio': $content = "bio";break;
case 'client': $content = "client";break;
case 'pfolio': $content = "pfolio";break;
case 'mail': $content = "mail";break;
}
?>
ajax.readyState è 4, mentre ajax.status mi dà = 0, invece che 200 Che errore è? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2005
Messaggi: 579
|
Ho scoperto che su IE mi dà errore 404, mentre su Firefox mi dà 0 ...
Avevo scambiato una & con il ? nella query... Però ora su IE funziona bene, mentre su Firefox continua a darmi errore 0 e non mi mostra il risultato. Ho provato anche con metodo POST e IE è ok, mentre Firefox mi continua a dare ajax.status=0. Quale problema potrebbe avere Firefox? |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Mar 2006
Città: Veneto
Messaggi: 210
|
Se posso darti uno consiglio spassionato, usa jQuery piuttosto che programmare in "Javascript puro", in questo modo eviti problemi di cross-browsing.
Inoltre il tutto ti risulterà mooooooooooooooolto più semplice e così potrai concentrarti di più sulla logica dell'applicazione (piuttosto che perderti in tecnicismi). |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2005
Messaggi: 579
|
Grazie mille del consiglio Snake.
Avevo guardato un po' tutto, ma jQuery ancora no. E' molto potente e semplice da usare. Adesso lo controllo meglio anche per Ajax. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
io preferisco Prototype a JQuery
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Feb 2005
Messaggi: 579
|
Allora, ho provato con jQuery, ma ho problemi anche lì:
il mio php è : Codice:
<?php
switch($_REQUEST['action']) {
case 'art': $content = "art";break;
case 'bio': $content = "bio";break;
}
echo $_POST['action'];
?>
Codice:
$.get("mioIndirizzo/public/Files/PHP/content.php", {action:"art"},
function(data) {
$("#p_francesco").html(data);
});
con POST: Codice:
("mioIndirizzo/public/Files/PHP/content.php", {action:"art"},
function(data) {
$("#p_francesco").html(data);
});
Ho provato anche: Codice:
$('#p_francesco').load("mioIndirizzo/public/Files/PHP/content.php", {action:"art"});
e, credo(?), con GET Codice:
$('#p_francesco').load("mioIndirizzo/public/Files/PHP/content.php", action="art");
e anche: Codice:
$.ajax({
url : "mioIndirizzo/public/Files/PHP/content.php", //
data : 'action=art',
success : function (data,stato) {
$("#p_francesco").html(data);
$("#p_francesco1").text(stato);
},
error : function (richiesta,stato,errori) {
alert("E' evvenuto un errore. Il stato della chiamata: "+stato);
}
});
Insomma non ci siamo. Riassumendo mi funziona solo qualche chiamata in post solo con IE6. Qualcuno mi illumina con jQuery? Grazie. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:15.



















