Cosa sto facendo male caricando questo array js?

Ho aggiunto un’altra domanda specifica su quello che penso sia il problema qui, ma penso che un po ‘più di dettaglio andrà bene. Quindi, questo è il mio codice:

   Prueba jQuery no event    jQuery(document).ready(function() { jQuery("a").click(function(ev) { //ev.preventDefault(); // Defino las variables var currentAnchor = jQuery(this); var currentHref = currentAnchor.attr('href'); var curHref = currentHref.split('/'); var curHrefFinal = curHref[2].replace('www.', ''); if(jQuery.inArray(curHrefFinal,urlsFinal) > -1) { // Evito que se visite el link directo ev.preventDefault(); if (ev.metaKey || ev.ctrlKey) { // Redirecciono el navegador a la página que queremos window.open(currentHref + "?a=esta-funcionando-tambien"); } else { // Redirecciono el navegador a la página que queremos window.location = currentHref + "?a=esta-funcionando"; }; }; }); });    

Hola, este es un link.

Hola, este es otro link.

Hola, este es otro link.

Hola, este es otro link.

Il file loadUrls.php sta emettendo:

 jQuery(document).ready(function() { var urlsFinal = [ "avantrip.com.ar", "avantrip.com", "espana.aula365.com", "almashopping.com", "airborn.com.ar", "1and1.mx", "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com" ]; }); 

Fondamentalmente, sto confrontando gli attributi href di tutti i link su cui si fa clic su un array che viene generato dynamicmente da un database SQL. Questo array deve essere ospitato in un file esterno, quindi il file loadUrls.php.

Per qualche motivo, urlsFinal var non viene riconosciuto nel codice principale. Se copio la matrice e la incollo nel file principale, il resto della cosa funziona correttamente. Non riesco a trovare alcun problema, ma sono sicuro che lo farai.

qualche idea?

Grazie!

Hai creato un ambito locale per la variabile – dovresti metterlo nello scope globale, rendendo loadUrls.php semplicemente lo script (senza il wrapper $(document).ready ):

 var urlsFinal = [ "avantrip.com.ar", "avantrip.com", "espana.aula365.com", "almashopping.com", "airborn.com.ar", "1and1.mx", "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com" ]; 

Un modo alternativo di aggiungerlo all’ambito globale (se si dice che era necessario chiudere $(document).ready per qualche altra ragione), è usare window.urlsFinal = [ ... ] .

Devi definire urlsFinal in uno spazio globale. Ci sono due modi per farlo.

Metodo 1: utilizzare la variabile della window :

 jQuery(document).ready(function() { var urlsFinal = [ "avantrip.com.ar", "avantrip.com", "espana.aula365.com", "almashopping.com", "airborn.com.ar", "1and1.mx", "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com" ]; window['urlsFinal'] = urlsFinal; }); 

Metodo 2: dichiarare la variabile in uno spazio globale, ma inizializzarla nello stesso spazio.

 var urlsFinal; jQuery(document).ready(function() { urlsFinal = [ "avantrip.com.ar", "avantrip.com", "espana.aula365.com", "almashopping.com", "airborn.com.ar", "1and1.mx", "oiasdoiajsdoiasdoiasjdioajsiodjaosdjiaoi.com" ]; });