Ajax函数在本地运行时工作,但在IIS中部署时不起作用

时间:2015-09-17 04:27:35

标签: jquery asp.net-mvc asp.net-ajax

我的MVC应用程序中有一个类似下面的ajax函数

 $.ajax({
         type: "GET",
         url: '/UpdateDetail/GetlocationAjax',
         data: { cityId: cityId },
         dataType: "json",
          success: function (result) {
          $.each(result, function (key, val) {
           workloc.append(
           $('<option></option>').val(val).html(key)
            );
          });
         },
         error: function (result) {
         }
         });

当我从visual studio运行应用程序时,这项工作非常完美,但是当我将其部署到IIS 7.5时,这个ajax功能无法正常工作

我尝试将URL作为url: '../UpdateDetail/GetlocationAjax',,然后同样在本地级别也不起作用,但我有另一个应用程序,我称之为ajax函数

 $.ajax({
        type: "GET",
         url: '../Preapproval/Getactivitycodetype',
         dataType: "json",
         success: function (result) {
                          $("#code_type-" + index)
         .append($('<option></option>').val("").html("--Type--")
                             );
                            $.each(result, function (key, val) {
                                $("#code_type-" + index).append(
                                $('<option></option>').val(val).html(key)
                                );
                            });
                        },
                        error: function (result) {
                        }
                    });

这完全适用于本地和IIS。

我的第一个ajax函数在IIS中不起作用可能是什么问题?

1 个答案:

答案 0 :(得分:3)

$.ajax({
         type: "GET",
         url: '@Url.Action("GetlocationAjax", "UpdateDetail")',
         data: { cityId: cityId },
         dataType: "json",
          success: function (result) {
          $.each(result, function (key, val) {
           workloc.append(
           $('<option></option>').val(val).html(key)
            );
          });
         },
         error: function (result) {
            console.log(result);
         }
         });

为了使这个工作你必须保持js,在cshtml页面而不是外部js文件,因为它使用MVC函数Url.Action();

如果你想将js保存在外部文件中,那么创建一个隐藏字段并从隐藏字段中读取url

<input type="hidden" id="ajaxUrl" value='@Url.Action("GetlocationAjax", "UpdateDetail")' />

然后在你的ajax调用脚本中使用:

var url = $("#ajaxUrl").val();
$.ajax({
         type: "GET",
         url: url,

还可以使用chrom检查器跟踪网络请求F12,网络选项卡。