2010-09-21 2 views
1

У меня есть javascript на моем сервере, и мне нужно установить значение/вызывать функцию внутри javascript при вызове URL-адреса. Есть ли способ сделать это?Проводка данных в JavaScript по URL-адресу


UPDATE:

<script type="application/x-javascript" src="test-test.js"></script> 

То, как он его загружен на HTML-сайте. И я хочу вызвать функцию test (e, e) внутри test-test.js, разместив URL-адрес в браузере с некоторыми значениями для e, e ..

+4

немного раскрутите. Что вы подразумеваете под «вызовом URL»? Вы используете AJAX? – nico

+0

Вы вручную помещаете URL-адрес в браузер (или нажимаете ссылку)? если это так, вам нужно поместить его в строку запроса (так как это HTTP GET). если вы отправляете URL-адрес (HTTP POST), вы можете прочитать значения сообщений формы на целевой странице и зарегистрировать их в своем сценарии. – RPM1984

+2

Вы используете javascript _on_ сервер или клиент? – thomasmalt

ответ

1

Если вы используете один из немногих веб-серверов, на которых используется серверный JavaScript, ваш скрипт будет запущен в браузере после загрузки страницы. Если вы хотите включить информацию из URL-адреса в свой сценарий (и это предполагает, что вы можете использовать строку запроса без изменения поведения сервера), вы можете использовать window.location.search, чтобы получить все от вопросительного знака.

Эта функция возвращает либо всю строку запроса (без знака вопроса) или точкой с запятой список значений, соответствующих значение имени вы кормите его:

function getUrlQueryString(param) { 
    var outObj = {}; 
    var qs = window.location.search; 
    if (qs != "") { 
     qs = decodeURIComponent(qs.replace(/\?/, "")); 
     var paramsArray = qs.split("&"); 
     var length = paramsArray.length; 
     for (var i=0; i<length; ++i) { 
     var nameValArray = paramsArray[i].split("="); 
     nameValArray[0] = nameValArray[0].toLowerCase(); 
     if (outObj[nameValArray[0]]) { 
      outObj[nameValArray[0]] = outObj[nameValArray[0]] + ";" + nameValArray[1]; 
      } 
     else { 
      if (nameValArray.length > 1) { 
       outObj[nameValArray[0]] = nameValArray[1]; 
       } 
      else { 
       outObj[nameValArray[0]] = true; 
       } 
      } 
     } 
     } 
    var retVal = param ? outObj[param.toLowerCase()] : qs; 
    return retVal ? retVal : "" 
    } 

Так, если URL был, скажем:

http://www.yoursite.com/somepage.html?name=John%20Doe&occupation=layabout 

если вы звоните getUrlQueryString() вы получите обратно name=John Doe&occupation=layabout. Если вы позвоните getUrlQueryString("name"), вы должны вернуться John Doe.

(. И да, я люблю отступы баннер стиля Так иск мне.)

+0

Thx ... был очень полезен :) Я решил проблему – Roskvist

1

Вы можете использовать address plugin, чтобы иметь возможность пройти какое-то условие в URLs корыто # символа: http://my_site/my_page#your_condition

в HTML вы можете написать что-то вроде этого:

<script> 
$(function(){ 
// Init and change handlers 
    $.address.init().change(function(event) { 
      if (event.value == "your_condition") 
       run_my_finction(); 
    }); 
    )}; 
<script> 

Посмотреть this exaple для futher помощи.

0

Если вы хотите выполнить JavaScript из адресной строки браузеров, вы можете использовать самоосуществляющуюся функцию:

javascript:(function() { 
    alert('Hello World'); 
    /* Call the JavaScript functions you require */ 
})(); 
Смежные вопросы