2017-10-13 109 views
2

好日子大家,jQuery的AJAX調用失敗5

我有一個CSHTML文件jQuery的AJAX方法,從服務器中檢索數據並顯示在一個模式對話框。該方法如下:

$("#flowButton").click(function() { 
    debugger; 
    var $buttonClicked = $(this); 
    var id = $buttonClicked.attr('data-id'); 
    var options = { "backdrop": "static", keyboard: true }; 
    $.ajax({ 
     type: "GET", 
     url: '@Url.Action("GetSentEntryFlow", "Inbox")', 
     contentType: "application/json; charset=utf-8", 
     data: $('#inboxSentForm').serialize(), 
     datatype: "json", 
     success: function (data) { 
      debugger; 
      $('#flowModalContent').html(data); 
      $('#flowModal').modal(options); 
      $('#flowModal').modal('show'); 
     }, 
     error: function() { 
      alert("Dynamic content load failed."); 
     } 
    }); 
}); 

這時候我使用的LocalDB數據源工作正常,但是當我更改連接字符串使用時顯示錯誤消息的遠程數據庫。我知道連接到遠程數據庫是可以的,因爲項目的其他部分都可以很好地使用它,只有這種方法失敗。

我的視圖代碼是這樣的:

@foreach (var itemGroup in Model.Entries) 
{ 
    int childCount = itemGroup.Count(); 
    <tr> 
     <td class="text-center"> 
      @Html.Hidden(string.Format("sentEntries[{0}].Id", rowNumber - 1), itemGroup.First().Id, new { @id = string.Format("sentEntries[{0}].Id", rowNumber - 1) }) 
      @Html.CheckBox(string.Format("sentEntries[{0}].Selected", rowNumber - 1), itemGroup.First().Selected, new { @id = string.Format("sentEntries[{0}].Selected", rowNumber - 1) }) 
     </td> 
     <td> 
      @(rowNumber++) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => itemGroup.First().EntryType.TypeFA) 
     </td> 
     <td> 
      @itemGroup.First().GetEntrySubject() 
     </td> 
    </tr> 
    foreach (var item in itemGroup.Skip(1)) 
    { 
     <tr> 
      <td class="text-center"> 
       @Html.Hidden(string.Format("sentEntries[{0}].Id", rowNumber - 1), item.Id, new { @id = string.Format("sentEntries[{0}].Id", rowNumber - 1) }) 
       @Html.CheckBox(string.Format("sentEntries[{0}].Selected", rowNumber - 1), item.Selected, new { @id = string.Format("sentEntries[{0}].Selected", rowNumber - 1) }) 
      </td> 
      <td> 
       @(rowNumber++) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.EntryType.TypeFA) 
      </td> 
      <td> 
       @item.GetEntrySubject() 
      </td> 
     </tr> 
    } 
} 

,並在控制器方法是這樣的:

public ActionResult GetSentEntryFlow(List<DataTableRow> sentEntries) 
{ 
    DataTableRow selectedRow = sentEntries.FirstOrDefault(i => i.Selected == true); 
    InboxSentEntry selectedSentEntry = InboxSentEntryRepository.GetById(selectedRow.Id); 

    ICollection<InboxReceivedEntry> firstLevelFlow = InboxReceivedEntryRepository.GetFirstLevelFlowByEntryId(selectedSentEntry.EntryId); 

    return PartialView("~/Views/Shared/Modals/_EntryFlowModalPartial.cshtml", firstLevelFlow); 
} 

是我得到它顯示在邊緣的開發工具部分的錯誤是這樣的:

HTTP404: NOT FOUND - The server has not found anything matching the requested URI (Uniform Resource Identifier). (XHR)GET - http://localhost:51527/Inbox/GetSentEntryFlow?__RequestVerificationToken=-jXt8frpCtnoDPMwd9eo1DUYn7T3ud6BVjsCGukmu7KwMnkgV-i26zKt68b5MIUOqrwkb__otyTvEKprDHAktqJl_T0sQuyS5WPSdX0ET8xx7RggVuDaz45Z_xE1a5OR7cQ5DAfTR4ygt3TmSZJ8fw2&dt_inbox_length=50&EntryTypeFilterInput=&EntryTypeFilterSelect=&EntryActionTypeFilterInput=&EntryActionTypeFilterSelect=&EntryPriorityFilterInput=&EntryPriorityFilterSelect=&sentEntries%5B0%5D.Id=0ff4995d-61da-4896-a30b-ce597090a26b&sentEntries%5B0%5D.Selected=true&sentEntries%5B0%5D.Selected=false&sentEntries%5B1%5D.Id=4274317e-59f4-4f06-8527-d7976f061b3d&sentEntries%5B1%5D.Selected=false 

當前窗口:本地主機/收件箱/發送

任何想法是什麼導致了這個問題? 在此先感謝

+0

當您瀏覽控制器時,您會收到什麼錯誤消息? – nurdyguy

+0

如果您單擊請求並查看響應,您也可能能夠在網絡選項卡上看到堆棧跟蹤。 – nurdyguy

+0

代碼執行根本沒有得到控制器。它停在jquery上。我會將jquery錯誤添加到帖子中。 –

回答

0

感謝nurdyguy幫助我找到錯誤的詳細信息,我找到了解決方案。錯誤的原因是遠程數據庫包含更多記錄,並且項目未配置爲允許任何長度的請求。所以我搜索了錯誤,並找到了以下鏈接,告訴如何更改web.confing以允許: How to configure the web.config to allow requests of any length

+0

如果你的要求真的那麼長,那麼你可能會考慮發送一個'post'請求而不是'get'。 – nurdyguy

+0

我會在稍後做。感謝您的幫助。 –