Как считать файл внутри функции jQuery "click"?
$("#testing").click(function() { url = "example.com"; window.open(url); }); При нажатии на объект происходит переход на заданный URL. Но прописывать URL жестко в коде нельзя, его надо считать из локального текстового файла из одной строки "text.txt". Но если вставлять внутрь данного кода другую функцию jQuery (jQuery.get()), то ничего не работает. Как сделать, чтобы в переменную "url" считывалась строка из файла? Желательно с помощью jQuery. |
Цитата:
|
Нет. Просто на сайте есть необходимость использовать единый javascript, а значения URL на разных сайтах могут быть разные. Поэтому их надо брать из файла. А код, приведённый в качестве решения такого вопроса:
$.get('file_to_read.txt', function(data) { do_something_with(data) }, 'text'); // ^------last argument При установке в мой скрипт не работает. Как я понимаю его нужно как-то модифицировать, но с jQuery не знаком. |
Цитата:
|
Файл лежит на сайте (сервере). Скрипт на этом же сайте и сервере. Не знаю каким файл считается. Вроде бы он локальный для скрипта. Раз они в одном месте живут, на одном физическом сервере и на одном домене. Не?
|
Цитата:
|
Пишу:
$.get('https://example.com/robots.txt', function(data) { alert(data); }, 'text'); и ничего не происходит. Полный путь, вместо "example.com" адрес сайта. И без полного пути тоже не работает с '/robots.txt'. |
Все должно работать, если файл в корне документов, то достаточно указать только имя файла. Не будет вывод результата только в том случае, если этот файл на другом домене, то есть страница запрашиваемая не принадлежит example.com. В этом случае это кроссдоменный запрос, и получить к нему доступ можно только если example.com дает на это разрешение. В противном случае нужен посредник - сервер, свой или прокси.
|
Вот полный код, который не работает:
$("#testing").click(function() { $.get('https://example.com/robots.txt', function(data) { alert(data); }, 'text'); }); Код специально упростил, чтобы увидеть текст хотя бы в alert. Нет ничего. IE 11 выдает: Объект не поддерживает свойство или метод get. Chrome: Uncaught TypeError: $.get is not a function. |
jQury нужно подключить, чтобы использовать ее функции. Ошибка же указывает причину - Uncaught TypeError: $.get is not a function.
|
jQuery подключен: "click" ведь работает. Иначе бы сюда как бы попасть было? В том то и дело, что функция внутри функции и видимо в этом проблема. Если выкинуть строки 3-5, то по щелчку мышью alert срабатывает. Он бы не работал, если бы jQuery не было.
|
Разместить на сервере в корне документов:
<html> <head> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <script type="text/javascript"> $(function() { $('button').click(function() { $.get('test.txt', function(d) { alert(d) }); }); }); </script> </head> <body> <button>GO</button> </body> </html> и файл test.txt. Щелкнуть по кнопке, покажет содержимое текстового файла. $('button').click ... это установка обработчика, в котором функция выполнит запрос $.get... и это не может быть причиной ошибки. |
Да, Ваш вариант работает. Похоже проблема в том, что я использую немного другую библиотеку:
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> Если меняю строку с Google на вышеуказанную, то работать перестаёт. Может как-то можно сделать чтобы работало и на этой версии? |
Подключайте не slim - https://code.jquery.com/jquery-3.3.1.min.js
|
Может быть есть какие-то другие варианты, чтобы использовать указанную мною строку? Дело в том, что всё это завязано на bootstrap и когда он обновляется, то придется каждый раз решать вопросы с совместимостью.
Надо всего лишь прочитать 1 строку из текстового файла. Без разницы как - главное, чтобы работало во всех браузерах. |
Цитата:
|
Да, всё правильно, спасибо! На сайте написано:
Цитата:
|
В процессе работы обнаружился глюк: на мобильных устройствах под управлением iOS не все браузеры переходят по нажатию на объект. Chrome предупреждает об открытии нового окна, а Safari и FireFox не реагируют никак.
Вопрос: как искать причину глюка? |
Часовой пояс GMT +3, время: 14:27. |