Tôi đang cố gắng sử dụng jQuery để kích hoạt cuộc gọi Ajax sau khi nhấp vào một nút nhất định. Tôi đã đọc một số ví dụ về cú pháp và các vấn đề có thể gặp phải, nhưng không tìm được giải pháp làm việc cho mục đích của tôi. Đây là mã.jQuery Ajax không gọi tới phương thức điều khiển MVC 4
điều khiển Phương pháp: (HomeController.cs)
[HttpPost]
public JsonResult ChangeCompany(string companyCode)
{
return Json(new { result = companyCode }, JsonRequestBehavior.AllowGet);
}
jQuery Mã số:
function changeCompany(company) {
$.ajax({
url: '@Url.Action("ChangeCompany", "Home")',
type: 'POST',
data: JSON.stringify({ companyCode: company }),
success: function (data) {
alert("Company: " + data);
},
error: function (req, status, error) {
alert("R: " + req + " S: " + status + " E: " + error);
}
});
}
Và cuối cùng, tôi gọi chức năng này với:
$('.companyButton').click(function() {
compCode = $(this).text();
debug("Click event --> " + $(this).text());
changeCompany(compCode);
});
nhắn debug của tôi hiển thị đúng cách và cuộc gọi Ajax liên tục không thành công với cảnh báo sau: R: [object Object] S: error E: Not Found
Tôi không hoàn toàn chắc chắn nên làm gì với điều đó.
Tôi biết có một số câu hỏi về chủ đề này, nhưng không có câu hỏi nào trong số này dường như giải quyết được vấn đề của tôi và tôi thành thật không chắc chắn có gì sai với các khối mã này. Bất kỳ cái nhìn sâu sắc sẽ được đánh giá cao.
EDIT: Trong trường hợp đáng chú ý, điều này là dành cho thiết bị di động. Thử nghiệm trên Trình giả lập điện thoại Windows 8 (Internet Explorer), cùng với jQuery Mobile. Không chắc liệu điều đó có ảnh hưởng đến Ajax ở tất cả
CHỈNH SỬA 2: Sau khi xem cuộc gọi mạng thô, có vẻ như 'Url.Action("ChangeCompany", "Home")'
không được chuyển đổi thành URL thích hợp và thay vào đó được gọi trực tiếp như thể đó là URL thô bản văn. Đây có phải là do jQuery đã lỗi thời hay một số yếu tố khác không?
Phương thức Hành động điều khiển của bạn trông như thế nào? Ngoài ra, hãy xem cuộc gọi mạng thô trong công cụ trình duyệt của bạn và xem chính xác cuộc gọi là gì - điều đó sẽ giúp khắc phục sự cố. –
Tôi nghĩ rằng đó là một lỗi phía máy chủ. Bạn có thể kiểm tra phần Mạng thanh công cụ Dev của Chrome khi bạn nhấp vào yêu cầu bạn có thể thấy phản hồi trong tab Xem trước hay không. –
Nếu bạn nhìn vào nguồn trong trình duyệt của mình, url có đúng không? Và nếu bạn đặt một trình gỡ rối ';' bên trong hàm lỗi, hãy xem xét kỹ hơn các tham số. –