2014-03-04 124 views
0

我对控制器的ajax调用适用于某些页面,如http://localhost:2493/anything,对于http://localhost:2493/Account/Login不起作用。Asp.net mvc 4 Ajax呼叫控制器

的索引页

$(document).ready(function() { 
    $.ajax({ 
      url: 'Home/GetLinks', 
      contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (data) { 
     $.each(data, function (index, val) { 
     $('#ListLinks').append('<li><a href="http://'+ val.Url +'" target="_new">' + val.Url + '</a></li>'); 
    }); 
    }, 
    error: function (xhr, status, err) { 
     console.log('Response code:' + xhr.status); 
     console.log('[Error:' + err + '] ' + status); 
    } 
    }); 
}); 

当调试网页上的验证码一样http://localhost:2493/Account/Login我得到一个错误的代码工作404

的JS代码放置在separeted文件及其呼吁_layout页。

我知道问题出在URL,所以我试图改变代码,并使用

url: '@Url.Action("Home","GetLinks")', 

然后,它不会将任何网页上工作。

如何编写此位代码以在任何页面上工作。

非常感谢

回答

1

尝试添加斜线,以Ajax调用的URL参数。

这意味着从域的根得到的网址:

$.ajax({ 
      url: '/Home/GetLinks', 
0

你的HTML帮助Url.Action方法不会在外部js文件的工作。因此,在您的剃须刀视图/布局文件中创建js变量(在全局范围内),并在外部JavaScript文件中使用它。

在你的剃须刀文件

<script type="text/javascript"> 
    var global_GetLinks_Url="@Url.Action("GetLinks","Home")"; 
</script> 

现在你可以在你的外部JS文件访问global_GetLinks_Url

$(document).ready(function() { 
    $.ajax({ 
      url: global_GetLinks_Url, 
      //rest of your code goes here 
});