使用Ajax调用Web Api Post需要注意的问题如下。
首先是跨域访问的问题,需要在Api端设置:
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowCors", builder =>
{
builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
});
});
app.UseCors("AllowCors");
注意需要增加AllowAnyHeader(),否则无法设置ContentType。
然后是Web Api的定义,示例如下:
[HttpPost("UpdatePlan")]
public string UpdatePlan(PlanDto plan)
{
if(string.IsNullOrEmpty(plan.PlanId)) plan.PlanId = Guid.NewGuid().ToString();
var content= JsonConvert.SerializeObject(plan);
System.IO.File.WriteAllText("Plans/" + plan.PlanId + ".json", content);
if(plan.IsFinish) RabbitMQUtility.SendMessage(content);
return "";
}
使用Ajax调用示例如下:
var data={
planId:$("#planId").val(),
planName:$("#planName").val(),
planDescription:$("#planDescription").val(),
isFinish:$("#isFinish").prop("checked")
};
$.ajax({
url:"http://localhost:5217/MakePlan/UpdatePlan",
type:"POST",
contentType:"application/json",
data:JSON.stringify(data),
success:function(){
alert("完成");
}
});
需要使用JSON.stringify处理需要传输的Json对象,并且将contentType设置为application/json。
网友评论