0

我有一个 ajax 调用,直到最近在托管网站上一直运行良好

像这样定义

$.ajax({
        url: 'GetItemsForCountry',
        type: 'GET',
        data: "country=" + country,
        success: function (items) {
            $("#Items").empty();
            $("#Items").attr("disabled", false)
            $.each(items, function (i, c) {
                $("#Items").append($('<option></option>').val(c.Value).html(c.Text))
            }
                  );
        })

当我尝试在 VS 中本地调试它时,它工作正常,我看到它通过我的控制器在线...

http://localhost:9000/Home/GetItemsForCountry?country=USA

当我在托管服务器上运行它时,它被传递为

http://servername/GetItemsForCountry?country=USA.  

它以前没有这样做。

有谁知道为什么?或者知道一种 MapRoute 方法以使其不出现 404 错误?

谢谢你的帮助。

大卫

4

2 回答 2

0

这是您正在使用的相对 URL,因此它将使用当前路径。由于它是一个homeurl,我假设它也使用默认路由。听起来您的 localhost 测试将http://localhost:28347/home/index不仅仅是根 url,而您的服务器测试将针对/. 解决这个问题的一种方法是使用

$.ajax({
    url: '@Url.RouteUrl(new { controller = "Home", action= "GetItemsForCountry"})',
    type: 'GET',
    data: "country=" + country,
    success: function (items) {
        $("#Items").empty();
        $("#Items").attr("disabled", false)
        $.each(items, 
            function (i, c) {
                $("#Items").append($('<option></option>').val(c.Value).html(c.Text))
            }
        );
})

无论呼叫如何,这都应该为您解决路线。

于 2012-09-19T00:47:34.180 回答
0

如果您将 URL 更改为/home/getitemsforcountry它将在服务器和本地工作。仅使用Getitemsforcountry将尝试将其附加到您所在站点的当前“区域”。

于 2012-09-19T02:07:42.597 回答