Pourquoi est-ce XMLHttpRequest échantillon de Mozilla ne fonctionne pas dans Firefox 3?

Je vais essayer d'obtenir le code d'exemple de Mozilla, qui consomme un service web REST fonctionne sous Firefox 3.0.10. Le code suivant ne fonctionne PAS dans Firefox, mais le fait dans IE 8!

  1. Pourquoi ça ne marche pas?
  2. Ne IE 8 du support de XMLHttpRequest? La plupart des exemples que j'ai vu utiliser l'ActiveX
    l'allocation. Que dois-je faire? XMLHttpRequest semble de plus en plus standardisés.

Exemple:

var req = new XMLHttpRequest();
req.open('GET', 'http://localhost/myRESTfulService/resource', false);    //throws 'undefined' exception
req.send(null);
if(req.status == 0)
  dump(req.responseText);

L'instruction open est en train de lancer une exception avec la description "indéfini". C'est étrange comme j'alloue la req objet, suis en cours d'exécution dans Firefox, et vérifié pour s'assurer qu'il est défini avant l'appel à open (dont il dit qu'elle est de type 'object').

J'ai aussi essayé la version asynchrone de ce avec pas de chance.

EDIT 2: ci-Dessous est mon plus récent code:

function createRequestObject() {
if( window.XMLHttpRequest ) {
return new XMLHttpRequest();
}
else if( window.ActiveXObject ) {
return new ActiveXObject( "Microsoft.XMLHTTP" );
}
return null;
}
function handleResponse( req ) {
document.writeln( "Handling response..." );   //NEVER GETS CALLED
if( req.readyState == 0 ) {
document.writeln( "UNITIALIZED" );
}
else if( req.readyState == 1 ) {
document.writeln( "LOADING" );
}
else if( req.readyState == 2 ) {
document.writeln( "LOADED" );
}
else if( req.readyState == 3 ) {
document.writeln( "INTERACTIVE" ); 
}
else if( req.readyState == 4 ) {
document.writeln( "COMPLETE" );
if( req.status == 200 ) {
document.writeln( "SUCCESS" );
}
}
}
document.writeln( "" );
var req = createRequestObject();
try {
document.writeln( "Opening service..." );
req.onreadystatechange = function() { handleResponse( req ); };
req.open('POST', 'http://localhost/test/test2.txt', true);  //WORKS IN IE8 & NOT FIREFOX
document.writeln( "Sending service request..." );
req.send('');
document.writeln( "Done" );
}
catch( err ) {
document.writeln( "ERROR: " + err.description );
}

EDIT 3: Bien, j'ai retravaillé ce en jQuery. jQuery fonctionne très bien sous IE, mais il jette 'Undefined' lors de l'exécution à partir de Firefox. Je double cochée et la case "Activer JavaScript" est activé dans Firefox semble bien fonctionner dans toutes les autres pages web. Ci-dessous est le code jQuery:

function handleResponse( resp ) {
alert( "Name: " + resp.Name );
alert( "URL: " + resp.URL );
}
$(document).ready( function() {
$("a").click( function(event) {
try {
$.get( "http://localhost/services/ezekielservices/configservice/ezekielservices.svc/test", 
"{}",
function(data) { handleResponse( data ); },
"json" );
} 
catch( err ) {
alert("'$.get' threw an exception: " + err.description);
}
event.preventDefault();
});
} );    //End 'ready' check

Résumé de la Solution:

Bien, web leçon 101. Mon problème a été en effet inter-domaine. Je consulte mon site inédits (seulement sur le système de fichiers), qui a touché un service publiées. Quand j'ai publié mon site dans le même domaine, il a travaillé.

Qui soulève aussi une distinction importante entre IE et Firefox. Quand IE expériences de ce scénario, il demande à l'utilisateur de décider s'ils acceptent ou non la croix-domaine d'appel. Firefox lance une exception. Alors que je suis à l'aise avec une exception, un plus descriptif aurait été utile.

Merci pour tous ceux qui m'ont aidé.

  • j'ai utilisé votre nouveau "légèrement modifié" code sur mon serveur. il fonctionne dans firefox 3. regarde ça: dogself.com/telluriumTest/test.htm j'ai seulement ajouté un meilleur système de connexion et de supprimer cette horrible document.écrire de la merde.