2017-03-02 61 views
0
从cstml页

Ajax调用:记录错误,而做一个AJAX POST请求

function InvoiceableItems(data) { 
      return $.ajax({ 
       type: 'POST', 
       url: apiRoot + 'createOrUpdate', 
       data: JSON.stringify(data), 
       contentType: 'application/json', 
       dataType: "json" 
      }); 
     } 

阿比控制器:

[HttpPost] 
public IHttpActionResult CreateOrUpdate(QuotationItemInvoiceableItemsSavingDto[] data) 
{ 
    if (data == null || data.Length == 0) 
    { 
     return BadRequest(); 
    } 
    return StatusCode(HttpStatusCode.NoContent); 
} 

错误控制台在Firefox:

请求的资源不不支持http方法 'GET'。

当我们进入chrome网络并点击api调用请求时,错误也会抛出。

+0

在查看调用的来源,我们也可以看到:-view-source:https:..................../.../.../createOrUpdate – abhijit

+0

如果您在Chrome中查看请求,您是否看到它发送GET或POST?有可能是重定向发生在不同的url上,或者您的路由未正确设置以击中该操作端点。如果你删除[HttpPost],会发生什么?行动是否被触发? –

回答

0

您是否缺少InvoiceableItems(数据)的右括号?或者已经明确定义了apiRoot?

<script type="text/javascript"> 
    var apiRoot = "http://<myurlbase>"; 

    function InvoiceableItems(data) { 
     return $.ajax({ 
      type: 'POST', 
      url: apiRoot + 'createOrUpdate', 
      data: JSON.stringify(data), 
      contentType: 'application/json', 
      dataType: "json" }); 
     } 
    } 
</script> 

大概jQuery在被调用之前已经被定义了吗?

您可以使用fiddler来测试您的方法是否按预期方式工作,并将方法设置为post。如果你把一个url放入chrome,firefox等,它会默认为导致你看到的错误。

+0

实际上,该方法按预期工作,即使来自提琴手也会打电话。但是它在控制台中记录了一些内容,当我们打开它在viewource中说的错误时请求的资源不支持http方法'GET'。 – abhijit

+0

我不完全能够找出问题的原因 – abhijit

+0

您的api位于不同的主机/端口上吗?如果CORS配置正确 - 是否将POST动词设置为允许?请参阅[Access-Control-Allow-Methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods) –