11484 sujets

JavaScript, DOM et API Web HTML5

Bonjour à vous,

Sur mon serveur www.serveurPRINCIPAL.com, j'ai un script "subscribe.php" qui traite mon formulaire qui se trouve sur la page www.serveurPRINCIPAL.com/newsletter.html. Jusque là, tout va bien : quand je valide le formulaire qui se trouve sur la page www.serveurPRINCIPAL.com/newsletter.html, l'action POST="subscribe.php" est effectuée et le formulaire rempli est bien traité

Mais j'aimerais mettre sur mon serveur www.serveurBIS.com un même genre de formulaire qui devrait être traité de la même manière par le script www.serveurPRINCIPAL.com, hébergé par ce serveurPRINCIPAL.com (car il s'agit d'inscrire dans une base de données du serveur principal, en gros).

Sur ma page www.serveurBIS.com/newsletter.html, j'ai donc le formulaire

 <form method="post" action="http://www.serveurPRINCIPAL.com/subscribe.php" name="form" id="subscribe" >
<input id="subscribeemail" name="email" type="text" >
<input id="submit" type="submit" name="subscribe" value="S'INSCRIRE À NOTRE NEWSLETTER" >
</form>

et le script JQuery suivant :

$(document).ready(function(){
	$("form#subscribe").submit(function(evt){
		evt.preventDefault();
		... [je passe quelques lignes]...
		var r=$(this).serialize();
		alert(r); /* ici, cela affiche bien les datas à transmettre sous la forme input1=contenu1&input2=contenu2&input3=contenu3*/
		$.post($(this).attr("action"), r,
					function(data) {
						alert("TEST");
					});
		alert("FIN");

mais cela ne semble pas marcher et je ne sais pas pourquoi... Lorsque je soumet le formulaire, il affiche bien une alerte avec "input1=contenu1&input2=contenu2&input3=contenu3", puis directement une autre alerte "FIN". Il ne semble pas exécuter le POST.

Le $(this).attr("action") est bien correct, il représente bien "http://www.serveurPRINCIPAL.com/subscribe.php" (et le problème reste le même si je remplace $(this).attr("action") par cette adresse).

Est-ce que vous pourriez m'aider à comprendre ce qu'il se passe et résoudre le problème ?

Je vous remercie d'avance !

Trucmuche

ps. j'ai bien évidemment full access aux deux serveurs, ils sont "à moi"...
salut,
l'Ajax en cross-domain n'est en réalité possible qu'avec la version 2 de l'objet XHR. Pour des raisons évidentes de sécurité, tu ne peux pas l'utiliser sans autorisation préalable. Il faut pour cela ajouter dans l'entête du script traitant (de www.serveurPRINCIPAL.com) un

Access-Control-Allow-Origin:  www.serveurBIS.com