2012-10-22 35 views
15

Tôi đang cố gắng thực hiện một yêu cầu AJAX bằng cách sử dụng $ .ajax trong MVC 4 với Razor. Tôi không chắc chắn làm thế nào để thực hiện nó.

Sử dụng this video Tôi có thể thực hiện thành công một cuộc gọi theo hướng liên kết trả về dữ liệu, nhưng tôi dường như không thể làm điều tương tự từ bên trong một hàm jquery. Tôi dường như không thể tìm thấy bất kỳ ví dụ cơ bản nào về cách thực hiện điều này. Đây là những gì tôi đang làm việc với:

HomeController.cs

 public string test(){ 
      return "It works"; 
     } 

View.cshtml

function inventory(dealerID) { 
    $.ajax({ 
     url: '@Url.Action("HomeController","test")', 
     data: {dealerID: dealerID}, 
     type: 'POST', 
     success: function(data) { 
      process(data); 
     } 
    }); 
} 

Trả lời

28

Bạn chỉ cần làm cho nó một ActionResult. Ngoài ra, nếu bạn đang sử dụng một POST Ajax, thì hành động cần phải được đánh dấu bằng thuộc tính HttpPost. Hãy thử điều này:

[HttpPost] 
public ActionResult test(string dealerID) 
{ 
    return Content("It works"); 
} 

Sửa Trên thực tế, có một vài vấn đề khác với cú pháp.

  1. Url.Action có các thông số điều khiển/hành động theo thứ tự sai - nên "ActionName" đầu tiên, sau đó "ControllerName"
  2. Đối Url.Action, nếu lớp điều khiển là "HomeController", sau đó bạn chỉ cần " Nhà "
  3. Cú pháp tùy chọn JQuery sai - phải là success: function(data) {}.

$.ajax({ 
    url: '@Url.Action("test", "Home")', 
    data: {dealerID: dealerID}, 
    type: 'POST', 
    success: function(data) { 
     alert(data); 
    } 
}); 
+0

Cảm ơn bạn rất nhiều! Nó hoạt dộng bây giờ. – Mason

+0

Trong ví dụ của bạn, phương thức 'test()' lấy 'dealerId' từ JSON bạn đang gửi nó như thế nào? Tôi có nên giả sử nó được chuyển như một tham số cho phương thức, và bạn đã bỏ qua nó? – crush

+3

@crush vâng, chính xác. Hệ thống định tuyến MVC đủ linh hoạt để kéo các thông số bộ điều khiển từ bất cứ nơi nào chúng có sẵn - chuỗi truy vấn, dữ liệu bài đăng hoặc dữ liệu tuyến đường. – McGarnagle

Các vấn đề liên quan