Ajax调用单独的js文件

Sam*_*ath 3 asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我可以在*.cshtml文件上使用ajax调用如下.它工作正常.

$.ajax({
    url: '@Url.Action("GetAllBooks", "Book")',
    cache: false,
    type: 'GET',
    contentType: 'application/json; charset=utf-8',
    data: {},
    success: function (data) {
        self.Books(data); //Put the response in ObservableArray
    }
});
Run Code Online (Sandbox Code Playgroud)

但是如何在单独的*.js文件中调用相同的方法?当我使用上面的代码时它不起作用?

and*_*lzo 5

CSHTML(我更喜欢标签输入):

@* without the attribute 'name' *@
<input type="hidden" value="@Url.Action("GetAllBooks", "Book")" id="UrlBookGetAllBooks" />

@* or *@

<div style="display:none;" data-url="@Url.Action("GetAllBooks", "Book")" id="UrlBookGetAllBooks"></div>
Run Code Online (Sandbox Code Playgroud)

JS:

var url = $('#UrlBookGetAllBooks').val();
//or for tag div
var url = $('#UrlBookGetAllBooks').data('url');

$.ajax({
    url: url,
    cache: false,
    type: 'GET',
    contentType: 'application/json; charset=utf-8',
    data: {},
    success: function (data) {
        self.Books(data); //Put the response in ObservableArray
    }
});
Run Code Online (Sandbox Code Playgroud)