Корень приложения в Javascript - PullRequest
1 голос
/ 08 августа 2011

Я поместил столько же, сколько и мой javascript в MyApp.js, чтобы мне не приходилось искать теги среди ASPX-страниц.Однако у меня проблема с корнем приложения, когда каталог разработки и каталог развертывания различаются, поэтому я использую глобальную переменную (appRoot), чтобы вручную изменить путь между развертыванием и временем разработки.Я пробовал window.location.url, window.location.host и т. Д., Ничего не получалось.Поскольку я не могу использовать <%: Url.Content ("~ / AppRoot")%> в .js, как я могу сделать любой путь, на который есть ссылка в .js, независимым от того, где находится мой каталог развертывания?Спасибо за помощь.

var appRoot =  "/2_1/"; //deployment path  
//var appRoot = "/"; //development path

$(function () {
    $("#txtSSNPage1,#txtSSNPage2").blur(function () {
        if ($(this).val() != undefined && jQuery.trim($(this).val()).length != 0) {
        try {
            var form = $(this).parents('form:first');
            form.attr('action', appRoot + 'Controller1/SSN/' + escape(jQuery.trim($(this).val())));
            form.submit();
        }
        catch (err) {
            alert(err.description);
        }
    } //if
}); //blur

$("input#txtNamePage3").blur(function () {
    if ($(this).val() != undefined && jQuery.trim($(this).val()).length != 0) {
        try {
            var form = $(this).parents('form:first');
            form.attr('action', appRoot + 'Controller2/SSN/' + escape(jQuery.trim($(this).val())));
            form.submit();
        } catch (err) {
            alert(err.description);
        }
    } //if
}); //blur

$("input#txtNamePage4").blur(function () {
    if ($(this).val() != undefined && jQuery.trim($(this).val()).length != 0) {
        try {
            var form = $(this).parents('form:first');
            form.attr('action', appRoot + 'Controller2/FullName/' + escape(jQuery.trim($(this).val())));
            form.submit();
        } catch (err) {
            alert(err.description);
        }
    } //if
}); //blur

});

Ответы [ 2 ]

0 голосов
/ 08 августа 2011

Если на каждой странице всегда есть скрипт, вы можете использовать его местоположение для определения корня сайта:

var myScript = $('script[src$="myscript.js"]');
var baseUrl = myScript.attr('src').substring(0, myScript.attr('src').length - "myscript.js".length);

При необходимости измените вторую строку, если вы храните скрипт в подкаталоге Scripts или аналогичном..

0 голосов
/ 08 августа 2011

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

<% response.write "<script>var appRoot =  """ & Url.Content("~/AppRoot") & """</script>" %>

перед вызовом файла .js в динамической части вашего приложения (.aspx)

...