2017-03-02 59 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) –