2009-08-20 41 views
5

Tôi có URL sai trong cuộc gọi ajax của mình.ASP.NET MVC sai url trong cuộc gọi ajax

$.ajax({ 
    type: "POST", 
    url: "Home/GetDetails", 
    ...... 
}); 

Trang chủTrình điều khiển có hành động GetDetails().

Tất cả hoạt động tốt, khi tôi tải trang với URL htp: // localhost/projectname URL Ajax là htp: // localhost/projectname/Trang chủ/GetDetails

Nhưng sau khi tải htp: // localhost/projectname/Home/Index tất cả các cuộc gọi ajax của tôi sẽ htp: // localhost/projectName/Home/Home/GetDetails và đó là sai.

Làm cách nào để tôi có thể giải quyết vấn đề này?

Trả lời

9

Bạn nên sử dụng trợ giúp liên kết để tạo URL của mình ...

$.ajax({ 
    type: "POST", 
    url: "<%= Url.Action("GetDetails") %>", 
    ...... 
}); 
+1

Chủ yếu là đúng , nhưng ở đây nó phải là Url.Action, chứ không phải là Url.Content. –

+0

Rất tiếc, đã được khắc phục - cảm ơn @Craig. – Kieron

+0

hoạt động tốt :) cảm ơn bạn –

4

Nếu bạn gắn bó với các dây và không Url.Action, đặt một dấu gạch chéo trước 'Trang chủ'

url: "/Home/GetDetails" 
+1

Điều này giả định rằng ứng dụng của bạn luôn được lưu trữ tại thư mục gốc của trang web. Nếu bạn có nhiều ứng dụng được lưu trữ thì rất có thể mỗi ứng dụng đều có thư mục ảo riêng của nó. Bạn có thể mã hóa toàn bộ URL, bao gồm thư mục ảo hoặc sử dụng trình trợ giúp URL trong MVC để tạo các URL động (phải luôn hoạt động). – Eilon

+2

Bạn làm gì khi có tệp js riêng biệt với tất cả javascript trong đó? – leen3o

+0

Tôi có xu hướng hardcode (** gasp! **) các URL. Nếu tôi có thời gian, tôi có thể có một tệp JS được tạo trên máy chủ với các URL được gán cho các biến JavaScript approprite, nhưng tôi không thực dụng về điều đó. – swilliams

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