Tôi đang gặp sự cố với cuộc gọi ajax của mình, hãy thực hiện theo phương thức web.api của tôi. Nếu tôi gỡ bỏ lệnh Guid orderId khỏi cả api và js, cuộc gọi sẽ chuyển nó thành bộ điều khiển, nhưng đối tượng pizza rỗng. Nếu tôi chuyển hướng dẫn trong URL, nó cũng làm cho nó vào bộ điều khiển nhưng không có bánh pizza. Vui lòng giải thích lý do tại sao điều này không hiệu quả hoặc giúp tôi hoạt động.Cuộc gọi Api Web đang trả về lỗi 404 với GUID được chuyển làm thông số
JS:
var savePizza = function (orderId, pizza) {
var dataCall = $.ajax(config.savePizzaUrl, {
data: ko.toJSON({ orderId: orderId, pizza: pizza }),
type: "post",
contentType: "application/json"
});
return Q.when(dataCall);
};
Web Api:
Objects[HttpPost]
public RequestReturn<Guid> SavePizza(Guid orderId, Pizza pizza)
{
return PizzaRequests.SavePizza(orderId, pizza);
}
JS:
var pizza = function (data) {
this.Id = data.Id;
this.Size = new size(data.Size);
this.SizeId = data.SizeId;
this.Toppings = $.map(data.Toppings, function(item) {return new topping(item);});
};
var topping = function (data) {
this.Id = data.Id;
this.Name = data.Name;
this.Price = data.Price;
};
var size = function (data) {
this.Id = data.Id;
this.Name = data.Name;
this.Price = data.Price;
};
C# Đối tượng:
public class Pizza
{
public Guid Id { get; set; }
public Guid SizeId { get; set; }
public Size Size { get; set; }
public IEnumerable<Topping> Toppings { get; set; }
}
public class Size
{
public Guid Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
public class Topping
{
public Guid Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
JSON Fiddler bài Capture:
Vì vậy, về cơ bản, web.api không phải dành cho tôi. Tôi có phương pháp mà tôi cần phải vượt qua nhiều đối tượng. Ví dụ: đối tượng Pizza, Đơn đặt hàng và Kích thước. Và tôi đã cố gắng vượt qua Guid trong đường dẫn URI và Pizza trong Dữ liệu, và nó đã làm cho nó đến bộ điều khiển của tôi nhưng đối tượng Pizza đã trống rỗng. – Boone
Không, API web dành cho mọi người. Tôi chắc chắn rằng nhu cầu của bạn có thể được đáp ứng. Bạn chỉ cần hiểu các quy tắc và chơi bởi chúng! Bạn đang đăng dữ liệu ': ko.toJSON ({pizza: pizza})'? Nếu vậy, bạn nên thử 'data: ko.toJSON (pizza)'. – Badri
Tôi đang làm dữ liệu: ko.toJSON (pizza). Tôi đã dành 3 giây và chỉ sử dụng một bộ điều khiển thông thường với cùng một mã và nó hoạt động hoàn hảo. Tôi luôn cảm thấy mình phải giải quyết các vấn đề để làm việc đó. – Boone