Cá nhân tôi thích sử dụng HTML5 đĩa dữ liệu * thuộc tính hoặc bao gồm URL là một phần của một số DOM yếu tố mà tôi không phô trương AJAXify.
Điều này là bạn không bao giờ viết các cuộc gọi $.ajax
bay vòng quanh như vậy. Bạn viết chúng tương ứng với một số sự kiện DOM. Ví dụ như nhấp vào một neo. Trong trường hợp này nó tầm thường, bạn chỉ cần sử dụng một helper HTML để tạo neo này:
@Html.ActionLink("click me", "someAction", "somecontroller", new { id = "123" }, new { @class = "link" })
và sau đó:
$('.link').click(function() {
$.ajax({
url: this.href,
type: 'GET',
success: function(result) {
...
}
});
return false;
});
hoặc có thể bạn đang AJAXifying một hình thức:
@using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Post, new { id = "myForm" }))
{
...
}
và sau đó:
$('#myForm').submit(function() {
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function(result) {
...
}
});
return false;
});
An ví dụ khác là sử dụng các thuộc tính data- * của HTML5 khi một url thích hợp không có sẵn trên phần tử DOM tương ứng. Giả sử bạn muốn gọi một hành động điều khiển với AJAX khi lựa chọn một thay đổi thả xuống. Hãy suy nghĩ ví dụ về các tầng xếp chồng.
Sau đây là cách thả xuống của bạn có thể trông giống như:
@Html.DropDownListFor(x => x.SelectedValue, Model.Values, new { id = "myDdl", data_url = Url.Action("SomeAction") })
và sau đó:
$('#myDdl').change(function() {
var url = $(this).data('url');
var selectedValue = $(this).val();
$.getJSON(url, { id: selectedValue }, function(result) {
...
});
});
Như bạn có thể thấy bạn không thực sự cần _getUrl
biến javascript toàn cầu này mà bạn khai báo trong của bạn lượt xem.
Tập lệnh của bạn phải nằm trong tệp js có thể thu nhỏ/có thể lưu trữ riêng biệt. – asawyer
Tôi cũng làm như vậy, nhưng tôi không chắc đó có phải là điều tốt hay không. +1 cho câu hỏi :) –
@asawyer - không chắc chắn ý kiến của bạn là gì ... – cs0815