2014-03-04 122 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 
});