部署到服务器后jQuery和AJAX无法正常工作

时间:2013-04-16 19:06:30

标签: jquery ajax asp.net-mvc

我有一个在我的本地计算机上工作正常的项目,但在部署到服务器后,无法正常工作。如果我在javascript中放置断点它会触及它们并通过代码,但不会执行它应该执行的操作(jquery autocomplete)。我甚至确保我需要的脚本文件存储在服务器上。有什么我在看的东西吗?

需要运行的代码:

<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>

_Layout.cshtml包含jquery的页面:

@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 个答案:

答案 0 :(得分:5)

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

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

1)将它放在脚本部分的<布局页面

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

2)在ajax url中添加“RootUrl”变量。 (它也在你的Js文件中运行你在你的ajax url之前添加“RootUrl”)

 url: RootUrl +'Home/GetUsers';

它对我来说是完美的,但是任何人都有其他解决方案然后发布我

答案 1 :(得分:4)

我需要将网址更改为在服务器上运行的网址。我的最终代码如下所示:

<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>

答案 2 :(得分:2)

虽然这是一个非常古老的问题,但这可能会对将来有所帮助。

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

它可以在本地工作,但不能在IIS上部署。

EX:       

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

由于 Pooja G

答案 3 :(得分:1)

遇到同样的问题,ajax调用在部署到服务器后无法正常工作。 Amol的方法适用于部署,但这在本地开发计算机上不起作用。在本地开发上调试时必须删除“〜”。

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

 url: "@Url.Action("GetUsers", "Home")"