Что я делаю неправильно, загружая этот массив JS?

0

Я добавил еще один вопрос конкретно о том, что, на мой взгляд, является проблемой здесь, но я думаю, что более подробная информация будет полезной. Итак, это мой код:

<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.

По какой-то причине URL-адрес urlsFinal не распознается в основном коде. Если я скопирую массив и вставьте его в основной файл, остальная часть работы будет работать правильно. Я не могу найти никаких проблем, но я уверен, что вы это сделаете.

Есть предположения?

Благодарю!

  • 0
    Вы добавили header(Content-Type: text/javascript); в вашем php файле?
  • 0
    @RecoveringSince2003 RecoveringSince2003 да, у меня есть.
Показать ещё 3 комментария
Теги:
arrays

2 ответа

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
    Это было просто ... Спасибо!
  • 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
    Это сработало! Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню