2013-01-10 5 views
0

J'ai passé un certain temps à passer par de nombreuses questions similaires, mais selon les réponses données, je suis porté à croire que j'ai cette configuration correctement - mais ça ne marche pas, et je suis pas certain de pourquoi. Je suis un débutant avec Javascript/jQuery, donc il est très possible (ou probable!) Qu'il me manque quelque chose de complètement évident ici.Passer une URL à une fonction Javascript

J'ai une page avec un grand div 'principal', et je charge le contenu dans celui utilisant jQuery .load via la navigation. Tout fonctionne bien. Cependant, certaines des pages cibles sont lourdes en données, alors j'essaie d'intégrer quelque chose entre les deux pour indiquer à l'utilisateur que la page est en cours de chargement. Parce qu'il ya de nombreux éléments de navigation, plutôt que d'avoir de multiples fonctions (par exemple un pour chaque élément de navigation) Je suis en train de le faire en une seule fonction, comme si ...

<script type="text/javascript"> 
function loadPage(pgurl) { 
    $('#main').html('<p align="center">Loading...</p>'); 
    $('#main').load(' +pgurl+ '); 
} 
</script> 

Le problème que j'ai est le onclick dans la navigation. Avant cela, j'avais le .load dans l'onclick (c'est-à-dire onclick = "$ ('# main'). Load ('/ pages/testpage /');") et cela a bien fonctionné. Maintenant, je lance la fonction loadPage via onclick, il charge une page noire (que firebug me dit est la racine du site).

Voici mon code onclick;

<a onclick="loadPage('/pages/testpage/');return false;">Test</a> 

Je ne reçois aucune erreur. Je peux seulement supposer que la fonction loadPage obtient une valeur nulle, plutôt que/pages/testpage/- mais je ne sais pas pourquoi! Pointeurs très appréciés - beaucoup de grattage de la tête qui se passe ici!

+1

'$ ('# main'). Load ('+ pgurl +');' devrait être '$ ('# main'). Load (pgurl);' – Pointy

Répondre

3

Il est déjà une chaîne:

$('#main').load(pgurl); 
+0

Merci - de toutes les choses que j'ai essayées, ça wasn l'un d'entre eux! – Lee

+0

heureux d'aider :) – AlienWebguy

2
$('#main').load(' +pgurl+ '); 

doit être

$('#main').load(pgurl); 

Vous devriez probablement écrire comme une ligne pour empêcher le second regard vers le haut.

function loadPage (pgurl) { 
    $('#main').html('<p align="center">Loading...</p>').load(pgurl); 
} 
+0

Merci, également pour la pointe d'une ligne! – Lee

2

Parce qu'il semble que vous n'êtes pas en utilisant le paramètre pgurl, cette chose dans les supports de charge est string un texte du nom de la variable :)

$('#main').load(' +pgurl+ '); 

d'utiliser à la place

$('#main').load(pgurl); 

Peut-être que vous devriez regarder cela si vous n'êtes pas familier avec la concaténation de chaînes http://www.youtube.com/watch?v=n17aX2TdQRk

+0

Merci - et aussi merci pour le lien youtube, très utile et certainement quelque chose que je dois rafraîchir! – Lee

2

Est-ce une faute de frappe?Essayez de changer:

$('#main').load(' +pgurl+ ');

à

$('#main').load(pgurl);

1

Vous devez changer la ligne suivante // vous passez chaîne pas une variable //

$('#main').load(' +pgurl+ '); 

à

$('#main').load(pgurl); 
Questions connexes