5

我有一个项目在我的本地机器上运行良好,但在部署到服务器后无法运行。如果我在 javascript 中放置断点,它会命中它们并遍历代码,但不会做它应该做的事情(jquery 自动完成)。我什至确保我需要的脚本文件存储在服务器上。有什么我在寻找吗?

需要运行的代码:

<script type="text/javascript">
    $(document).ready(function () {
        $("input.autocomplete").autocomplete({
            appendTo: '.container',
            source: function (request, response) {
                $.ajax({
                    url: '/Home/GetUsers',
                    type: "POST",
                    dataType: "json",
                    data: { query: request.term },
                    success: function (data) {
                        response($.map(data, function (item) {
                            return { label: item, value: item };
                        }));
                    }
                });
            }
        });
    })
</script>

包含 jquery 的 _Layout.cshtml 页面:

@Styles.Render("~/Content/css")
@Styles.Render("~/Content/themes/base/jquery-ui.css")
@Styles.Render("~/Content/themes/base/jquery-ui.autocomplete.css")
@Scripts.Render("~/bundles/modernizr")

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.8.20.js")"></script>
4

5 回答 5

5

我在我的 mvc 项目中也面临这个问题....

我通过以下步骤解决了这个问题。

1)把它放在你的布局页面的脚本部分

<script type="text/javascript">
var RootUrl = '@Url.Content("~/")';
</script>

2)在ajax url中添加“RootUrl”变量。(它也适用于您的 Js 文件,您在 ajax url 之前添加“RootUrl”)

 url: RootUrl +'Home/GetUsers';

它对我来说很有效,但是任何人都有其他解决方案,然后请发给我

于 2014-05-21T19:10:09.063 回答
4

我需要将 url 更改为在服务器上工作的 URL。我的最终代码如下所示:

<script type="text/javascript">
$(document).ready(function () {
    $("input.autocomplete").autocomplete({
        appendTo: '.container',
        source: function (request, response) {
            $.ajax({
                url: '/Lookup/Home/GetUsers',
                type: "POST",
                dataType: "json",
                data: { query: request.term },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item, value: item };
                    }));
                }
            });
        }
    });
})
</script>
于 2013-04-16T20:20:14.517 回答
2

尽管这是一个非常古老的问题,但这可能会在将来对某人有所帮助。

如果它是一个已开发的 .asmx 页面,那么我们必须在 web.config 中指定 HTTP 动词才能访问它。

它将在本地工作,但在 IIS 上部署后不能工作。

前任:

  <webServices>
    <protocols>
      <add name="HttpGet"/>
      <add name="HttpPost"/>
    </protocols>
  </webServices>

谢谢 Pooja G

于 2016-07-13T12:36:15.190 回答
2

有同样的问题,部署到服务器后,ajax 调用不起作用。Amol 的方法适用于部署,但不适用于本地开发计算机。在本地开发调试时,您必须删除“~”。

经过一番研究,找到了一个更好的解决方案,可以同时适应这两种环境。在您的 ajax 方法中,将URL参数更改为以下方式:

 url: "@Url.Action("GetUsers", "Home")"
于 2017-04-27T12:19:13.673 回答
2

在您的情况下,服务器不支持 Url ,

消除'/Home/GetUsers'

并使用url: "@Url.Action("Action", "Controller")"

于 2018-02-26T12:08:21.630 回答