2013-10-22 54 views
0

我已經添加了另一個關於我認爲是問題的具體問題,但我認爲更多的細節會有所幫助。所以,這是我的代碼:我在加載這個js數組時做了什麼錯誤?

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Prueba jQuery no event</title> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.min.js"></script> 
<script type="text/javascript" src="loadUrls.php"></script> 
<script type="text/javascript"> 
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"; 
      }; 
     }; 
    }); 
}); 
</script> 
</head> 

<body> 
<p>Hola, <a href="http://www.avantrip.com">este es</a> un link.</p> 
<p>Hola, <a href="http://espana.aula365.com/es/">este es</a> otro link.</p> 
<p>Hola, <a href="http://stackoverflow.com">este es</a> otro link.</p> 
<p>Hola, <a href="http://www.airborn.com.ar">este es</a> otro link.</p> 
</body> 
</html> 

的loadUrls.php文件輸出:

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

基本上,我比較所有鏈接的href屬性被點擊到正在動態生成一個數組來自SQL數據庫。這個數組需要託管在一個外部文件中,因此是loadUrls.php文件。

由於某些原因,urlsFinal var在主代碼中未被識別。如果我複製數組並將其粘貼到主文件中,則其餘部分工作正常。我找不到任何問題,但我相信你會的。

有什麼想法?

謝謝!

+0

您是否在'php'文件中添加了'header(Content-Type:text/javascript);'? –

+0

@ RecoveringSince2003是的,我有。 – user906379

+0

你不只是'echo/printing'數組嗎? –

回答

3

您已經創建了一個可變的局部範圍內 - 你應該把它放到全球範圍內,通過使loadUrls.php簡單的腳本(不$(document).ready包裝):

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

增加的另一種方法它到全球範圍(如果你說因爲某些其他原因需要關閉$(document).ready),就是使用window.urlsFinal = [ ... ]

+0

這很簡單...謝謝! – user906379

+1

+1,如果你提到'header(Content-Type:text/javascript);'這將是一個很好的資源供將來參考。我很早就懷疑過它。 –

0

您需要在全局空間中定義urlsFinal。有兩種方法可以做到這一點。

方法1:使用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; 
}); 

方法2:聲明變量在一個全球性的空間,但在相同的空間初始化。

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

這也適用!謝謝! – user906379

相關問題