2010-03-31 3 views
1

Le script ajax jQuery ci-dessous ne fonctionne pas sur mon site si url est sans www. J'ai vérifié Firebug et il n'envoie pas l'appel ajax.jQuery ajax ne fonctionne pas sur url sans www

$.ajax(
    { 
     type: "POST", 
     url: "http://www.mysite.com/beta/products.php", 
     data: "page_type=index&sort=relevancerank&CartId=<?php echo $CartId;?>&HMAC=<?php echo $HMAC;?>", 
     success: function(msg) 
     { 
      $('#content-holder').html(msg); 

     }, 
     error: function() 
     { 
      alert("An error occurred while updating. Try again in a while"); 
     } 
    }); 

Répondre

6

Je suppose que l'URL du document d'appel est référencé comme "mysite.com" ou "subdomain.mysite.com"? L'objet XMLHttpRequest (le moteur qui alimente les appels jQuery Ajax) ne peut pas effectuer de requêtes "interdomaines". Un sous-domaine (par exemple «www») est qualifié. Assurez-vous que vos demandes sont dans le même sous-domaine.

+0

exactement !. En fait, mon appel ajax travaillé quand j'ai utilisé www dans l'URL. ça n'a pas fonctionné sans www. Après avoir regardé @ votre commentaire, j'ai vérifié mon appel ajax et j'ai donné paramètre url avec www. Merci! – VKGS

+0

Si vous fournissez une URL relative comme: "www.your-site.com/some/some/..." au lieu de "/ some/some/..." AJAX ne fonctionne pas lorsque vous appelez "your-site.com/some/some/... "car n'effectuez pas de requêtes" inter-domaines ". Utilisez l'URL relative dans votre AJAX et travaillerez sur WWW et sans WWW. –

4

Vous n'avez pas besoin de fournir une URL absolue, vous pouvez simplement fournir un relative, et cela fonctionnera indépendamment du fait que votre page soit chargée avec le www. ou non sous-domaine:

//... 
    type: "POST", 
    url: "/beta/products.php", 
//... 
+0

je suis d'accord avec vous. mais dans certains cas, si nous effectuons cet appel ajax dans notre page d'en-tête également quand il y a une redirection htaccess nous devons nous en tenir à l'URL absoulte. – VKGS

0

Votre serveur allez être redirigé vers le domaine « www » peut-être? Il s'agit probablement de la même règle d'origine qui empêche votre page externe d'accéder à un domaine différent.

0

www. est juste une convention de nommage - ajax chargera sur n'importe quelle adresse qui peut être recherchée via dns, ou il fonctionnera sur une adresse ip aussi longtemps qu'il y a un serveur pour répondre à la demande. MAIS - l'emplacement de votre page et la requête ajax doivent être dans le même domaine pour des raisons de sécurité. Pour contourner cette restriction, vous devez utiliser quelque chose appelé JSONP

+0

J'ai des problèmes avec ça. Si j'accède à mon site sans le "www", le problème de politique de même origine se pose. Maintenant, je dois résoudre ce problème parce que tous mes ajax calss sont fait avec l'URL absolue. – Ricardo