Ajax 剑道UI网格请求方法是可选的,即使我打算发布
我试图将数据从剑道Ui网格发布到我的web apiAjax 剑道UI网格请求方法是可选的,即使我打算发布,ajax,asp.net-web-api,kendo-ui,kendo-grid,kendo-asp.net-mvc,Ajax,Asp.net Web Api,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我试图将数据从剑道Ui网格发布到我的web api var crudServiceBaseUrl = "http://127.255.0.1:8081/api", dataSource = new kendo.data.DataSource({ transport: { read: { url: crudServiceBaseUrl + "/meeting",
var crudServiceBaseUrl = "http://127.255.0.1:8081/api",
dataSource = new kendo.data.DataSource({
transport: {
read: {
url: crudServiceBaseUrl + "/meeting",
dataType: "jsonp",
},
update: {
type: "POST",
url: crudServiceBaseUrl + "/meeting/postmeeting",
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (msg) {
alert("success");
}
},
.....
$("#grid").kendoGrid({
dataSource: dataSource,
pageable: true,
toolbar: ["create"],
columns: [
{ field: "Organizer", title: "Organizer" },
{ field: "Title", title: "Title" },
{ field: "Location", title: "Location", },
{ command: ["edit", "destroy"], title: " ", width: "160px" }],
editable: "inline"
});
但是当我更新的时候
我得到405个错误
Request URL:http://127.255.0.1:8081/api/meeting/postmeeting
Request Method:OPTIONS
Status Code:405 Method Not Allowed
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, origin, content-type
Access-Control-Request-Method:POST
Host:127.255.0.1:8081
Origin:http://localhost:30320
Proxy-Connection:keep-alive
有人能给我解释一下请求方法是怎么变成选项的吗?
因此,我的ASP.NET Web API中的POST方法没有被调用
[HttpPost]
public HttpResponseMessage PostMeeting(MeetingEntity meeting)
{
_meetingRepository.Update(meeting);
return new HttpResponseMessage(HttpStatusCode.OK);
}
如果您正在访问
http://127.255.0.1:8081/api/meeting/postmeeting
fromhttp://localhost:30320
,这是一个跨来源请求。默认情况下,浏览器阻止访问位于不同来源的资源。退房
跨源资源共享()是绕过此限制的一种方法。因为你写了一篇文章,浏览器会发出一个预先发出的CORS请求,这基本上是一个选项请求。如果此选项请求产生带有必要CORS标题的响应,浏览器将随后发出POST请求。您可以实现一个操作方法来处理选项,但是现在在WebAPI中启用CORS非常容易。检查此项。如果您正在访问
http://127.255.0.1:8081/api/meeting/postmeeting
fromhttp://localhost:30320
,这是一个跨来源请求。默认情况下,浏览器阻止访问位于不同来源的资源。退房
跨源资源共享()是绕过此限制的一种方法。因为你写了一篇文章,浏览器会发出一个预先发出的CORS请求,这基本上是一个选项请求。如果此选项请求产生带有必要CORS标题的响应,浏览器将随后发出POST请求。您可以实现一个操作方法来处理选项,但是现在在WebAPI中启用CORS非常容易。检查此项。您好。你能解释一下“你可以实现一个操作方法来处理选项”吗?在数据源中我会在哪里使用它?我正在使用rack运行rails api,它为CORS和工作设置,但由于某种原因,Chrome不记得服务器允许CORS,并一直触发选项,然后每次GET。(所以是2 req而不是1)谢谢。你能不能解释一下“你可以实现一个操作方法来处理选项”。我将在数据源中的何处使用它?我正在使用rack运行rails api,它是为CORS设置的,可以正常工作,但由于某些原因,Chrome不记得服务器允许CORS,并且每次都会启动选项。(由1改为2)。我正在考虑推翻它。谢谢