2011-08-09 4 views
1
<script> 
$(document).ready(function() { 
    $('#enter').click(function() { 
    $.post('setCookie.php'); 
    });  
}); 
</script> 

<div id="enter"> 
    <a href="http://www.mydomain.com">Enter</a> 
</div> 

En cliquant entrer, il est censé aller à mydomain.com et aussi définir un cookie. Cela fonctionne dans Firefox, mais pas IE ou Chrome. Des idées?jquery: Pourquoi cela ne fonctionne-t-il pas sur Chrome?

+0

Quel est le motif de la .cliquez ne peut pas agir sur l'ancre? Si ce n'est pas le cas, vous pouvez rapidement contourner le problème de la gestion des événements de jQuery. –

+0

Pouvez-vous diriger le lien vers setCookie.php, puis ajoutez-tête (« emplacement: http://www.mydomain.com ») après qu'il a été défini? – bozdoz

+0

Oui, je l'ai fait ... – luqita

Répondre

-1

Je ferais

<a href="javascript:$.post('setCookie.php');window.location='http://www.mydomain.com'">abc</a> 
+0

que voulez-vous dire? – luqita

+0

J'ai fait une petite erreur en entrant ma réponse, ma mauvaise. – SBSTP

1

Essayez avec

$('#enter a').click(function() { 

Edit: Vous avez un POST passe le clic d'ancrage, puis un GET avec l'ancre elle-même . Cela semble être contradictoire sur le navigateur.

Pour de meilleurs résultats, créez une page SetCookieAndRedirect.php et effectuer la redirection vers l'URL après avoir réglé le cookie.

+0

non, ne fonctionne toujours pas :( – luqita

+0

La réponse éditée est une bonne idée – bozdoz

2

Il peut aller sur le site avant de charger pour Chrome. Vous pouvez définir un attribut cible à « _blank » sur l'étiquette d'ancrage, ou vous pouvez utiliser une fonction de rappel après .post $ finitions, comme ceci:

<script> 
$(function(){ 
    $('#enter').click(function() { 
    $.post('setCookie.php',function(){ 
window.location = $('#enter a').attr('href'); 
}); 
    });  
}); 
</script> 

<div id="enter"> 
    <a href="http://www.mydomain.com" onclick="return false;">Enter</a> 
</div> 
+0

merci, fonctionne sur Chrome, mais pas dans IE :( – luqita

+0

Je l'ai réparé un peu, si vous voulez essayer à nouveau.Il est difficile de faire cross-navigateur parfois. – bozdoz

2

Essayez cette

$(document).ready(function() { 
    $('#enter a').click(function(e) { 
     e.stopPropagation(); 
     var href = this.href; 
     $.post('setCookie.php', function(){ 
      window.location.href = href; 
     }); 
    });  
}); 
+0

Merci, travaille sur Chrome, à défaut encore sur IE ... :( – luqita

+0

ce qui est l'erreur sur IE –

+0

le lien ne fonctionne tout simplement pas, quand je clique dessus, il me tient pas compte. il ne définit pas le cookie soit . – luqita

0

Rappelez-vous que la L'appel .post() est asynchrone, de sorte que le reste de la fonction continuera à circuler avec le fichier .post() en arrière-plan. Vous aurez besoin d'utiliser une fonction de rappel à l'intérieur de votre message: Si vous ne voulez pas de vérification d'erreur, vous pouvez ignorer if/else et appeler simplement la redirection.

$(document).ready(function() { 
    $.post('ajax/test.html', function(data) { 

     if (data.success === 'cookieset') 
     { 
      // redirect to page 
       window.location.replace("http://mydomain.com"); 
     } 
     else 
     { 
      // put some sort of notification here that it wasn't set and decide what to do next 
       window.location.replace("http://mydomain.com"); 
     } 

    }); 
}); 

jusqu'à la redirection que vous pouvez utiliser:

pour simuler une utilisation http redirect

window.location.replace("http://mydomain.com");

ou en cliquant sur une simule l'utilisation de lien

window.location.href = "http://mydomain.com"; 
Questions connexes