2013-06-24 4 views
3

Мне нужен кто-то, кто просветит меня. Я видел это:Вызовите js с параметрами GET

<script src="http://host.com/file.js?no_forms=1"></script> 

Что это значит? Параметр GET передан в файл javascript? В каких условиях это можно сделать? Что это за подход?

Любая помощь будет оценена по достоинству.

+0

Каждый раз, когда вы делаете запрос на сервер, лат версия js-файла будет загружена на клиентскую сторону. Когда вы делаете какие-либо изменения в js-файле, вам не нужно очищать кеш браузера, чтобы повлиять на изменения js, он автоматически получит файл последней версии с сервера, если вы укажете параметр после URL-адреса. –

+0

Возможный дубликат [Что делает "?" знаковое значение в запросе на статический JS-файл?] (http://stackoverflow.com/questions/12615199/what-does-the-sign-mean-in-a-request-for-a-static-js-file) –

+0

@FelixKling Если нет другой причины, по которой передается параметр GET при получении файла .js, да, я думаю, что это дубликат. Спасибо за предупреждение. –

ответ

5

?no_forms=1 - всего лишь параметры строки запроса. я просто расскажу об общем использовании таких вещей.

  • Используется для кэширования, чтобы избежать (получить новую обновленную версию JS)
  • Каких-то перенаправление
  • Даже некоторые идеи использования приложений.
+0

Ну, на самом деле это похоже на использование - избегайте «кеширования»; потому что я нахожусь в среде разработки, и файл.js сильно меняется другой командой. –

2

Иногда параметр используется просто для предотвращения кеширования на стороне клиента.

Возможно также, что запрос file.js фактически переписан как динамический вызов (скажем, script.php?file=file.js&no_forms=1), который извлекает правильный файл и каким-то образом использует дополнительный параметр.

+0

Как я сказал @Ravi, похоже, это использование - избегайте «кеширования». Большое спасибо. –

0

Вы можете использовать этот

<script src="http://host.com/file.js" no_forms="1"></script> 

И

function $_GET(q,s) { 
    s = s || window.location.search; 
    var re = new RegExp('&'+q+'=([^&]*)','i'); 
    return (s=s.replace(/^\?/,'&').match(re)) ? s=s[1] : s=''; 
} 

И получить результат

var noForms = $_GET('no_forms'); 
+0

это приведет к аннулированию структуры HTML, поскольку атрибут не соответствует стандартам HTML. – Raptor

+0

NP, используйте "data-no-forms" –