2009-07-17 7 views

Répondre

3

JavaScript n'est pas autorisé à faire des demandes inter-domaines. C'est un gros risque de sécurité. Au lieu de cela, vous devrez exécuter un script sur le serveur et le faire renvoyer les résultats à votre fonction JavaScript.

Par exemple, en supposant que vous utilisez JavaScript et PHP, vous pouvez configurer l'application fonctionne comme ceci:

JavaScript lance une requête Ajax à une page (ou script) situé sur votre serveur. Il passe tous les paramètres requis à cette page. Le code suivant est basé sur jQuery (pour être concis), mais les principes sont les mêmes quel que soit votre cadre.

var sParameters = " ... " // this is defined by you 
$.ajax({ 
    url: 'your-server-side-code.php', 
    processData: false, 
    data: sParameters, 
    success: function(sResponse) { 
    // handle the response data however you want 
    } 
}); 

Le code côté serveur répondra à la demande et transmettra les paramètres nécessaires au site Web inter-domaines. Le cURL library de PHP est bon pour ceci.

// very contrivuted cURL configuration for purposes of example... 
$curl_connection = curl_init(); 
$str_url = "http://you-url.com"; 
curl_setopt($curl_connection, CURLOPT_URL, $str_url); 
curl_setopt($curl_connection, CURLOPT_GET, 1); 
// ... keep setting your options ... 
$str_response = curl_exec($curl_connection); 
curl_close($curl_connection); 

Lorsque le site interdomaine répond, votre code côté serveur peut écho à la réponse au demande initiale. Cela devrait probablement être validé avant de répondre, mais ce n'est qu'un exemple. Une fonction de gestionnaire de réponse JavaScript peut ensuite analyser les données de réponse entrantes. Notez la fonction de succès dans le premier bloc de code JavaScript ci-dessus.

+0

Notez que ceci est une douleur lorsque la page n'est pas accessible à partir du serveur. – MSalters

+0

Je crains de ne pas avoir de serveur curl activé. –

0

Si vous ne possédez pas l'autre page, ce sera très difficile.

En fait, vous ne pouvez pas faire une requête à un autre domaine en javascript. La seule chose que vous pouvez faire est de charger un script d'un autre domaine:

<script type="text/javascript" src="http://otherdomain.com/script.js"></script> 

Si le but est de charger des données de l'autre domaine, et (comme je l'ai dit) que vous possédez l'autre site, vous pouvez créer le fichier script.js, qui va charger les données dont vous avez besoin dans votre site d'origine. Rappelez-vous que c'est une chose délicate, et que cela doit être fait seulement si vous savez ce qu'il y aura dans le script.

0

Vous pouvez effectuer des requêtes inter-domaines à partir de localhost, mais si vous envisagez de déployer ce code sur un serveur, cela ne fonctionnera pas. Puisque vous développez un bookmarklet, je pense que vous pouvez le faire.

Vous devez utiliser AJAX pour obtenir le code HTML distant.

La bibliothèque jQuery rend cette tâche aussi simple que cela ...

$.get("http://www.google.com", function(html) { alert(html); }); 
+0

Merci, mais cela ne fonctionne que si je cours le bookmarklet en visitant google.com –

Questions connexes