6

在 Visual Studio 中,我正在开发的网站上有一些 Javascript 代码。在调试时,我正在使用对“localhost”的 $ajax 调用。部署后,它需要是实际的服务器:

$('#textInput_UserName').focusout(function () {
    var _username = $('#textInput_UserName').val();
    $.ajax({
        url: 'http://localhost:8809/Account/UserNameExists/',
        data: { username: _username },
        dataType: 'html',
});

当我发布时,我需要将该 localhost 转换为实际域:

$('#textInput_UserName').focusout(function () {
    var _username = $('#textInput_UserName').val();
    $.ajax({
        url: 'http://www.mydomain.com/Account/UserNameExists/',
        data: { username: _username },
        dataType: 'html',
});

是否有一种简单/自动的方法来执行此操作,类似于 Web Config 转换的工作方式?

非常感谢!

4

3 回答 3

3

你没有,你只是省略了主机,浏览器会为你填写这个,像这样:

$('#textInput_UserName').focusout(function () {
    var _username = $('#textInput_UserName').val();
    $.ajax({
        url: '/Account/UserNameExists/',
        data: { username: _username },
        dataType: 'html',
});

如果您实际上是在谈论 x 域请求,我怀疑您是,那么只需设置一个全局 js 站点变量。

于 2012-06-06T15:15:53.257 回答
1

我建议你使用这个:

url: '<%= ResolveClientUrl("~/Account/UserNameExists/")',

如果您这样做,您将避免出现以下问题:

  • 将应用程序安装在虚拟目录而不是域根目录中
  • 将您的页面移动到应用程序中的不同目录级别
  • 从母版页或用户控件使用您的服务,可以在不同的页面中实例化,因此是目录级别

您还可以在您的页面/用户控件/母版页中公开一个公共属性,并以相同的方式从代码中使用它,即:

  • 页面/uc/master 中的代码:public string ServiceUrl { get { return ResolveClientUrl("~/Account/UserNameExists/");}
  • .aspx 中的代码:url: '<%= ServiceUrl',
于 2012-06-07T23:51:22.877 回答
0

您是在调用网络服务还是此 url 的目的地是什么?当我在我的 Web 应用程序中使用 ajax 调用时,我通常会在 Web 服务中设置方法并像这样调用它们:

 $.ajax({
        type: "POST",
        url: "../Services/BookingService.asmx/GetVerifiedReservations",
        data: paramsJson,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        success: function (response) {
            invalidDays = $.parseJSON(response.d);
        },
        error: function (xhr, textStatus, thrownError) {
            alert(textStatus);
            alert(thrownError);
        }
    });

如您所见,该路径与您域中的其余文件相关。

于 2012-06-06T15:17:31.570 回答