簡體   English   中英

jQuery ajax調用將無法訪問控制器:無法加載資源:服務器以狀態500(內部服務器錯誤)響應

[英]Jquery ajax call wont access the controller: Failed to load resource: the server responded with a status of 500 (Internal Server Error)

我一直無法加載資源:服務器響應狀態為500(內部服務器錯誤),指示對我的控制器方法的調用不起作用,我不知道為什么:

var user = "founder";
var clanName = "superClan";
var SuspensionDate = Date.now;
$.ajax({
            url: '@Url.Action("SuspendUserFromClan", "ChatMethods")',
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: { 'ClanName': clanName, 'UserToSuspend': userToAdd, 'DateSuspendedTill': SuspensionDate },
            dataType: "json",
            traditional: true,
            success: function (data, status, xhr) {
                alert(data);
            },
            error: function () {
                alert("An error has occured!!!");
            }
        });

我的控制器:

public JsonResult SuspendUserFromClan(string ClanName, string UserToSuspend, DateTime DateSuspendedTill)
{
 ...
}

在執行操作時將[HttpPost]添加到控制器中:從ajax輸入:“ POST”

[HttpPost]
public JsonResult SuspendUserFromClan(string ClanName, string UserToSuspend, DateTime DateSuspendedTill)
{
 ...
}
var SuspensionDate = new Date();
$('#SuspendUser').on("click", function () {

            $.ajax({
                url: '@Url.Action("SuspendUserFromClan", "ChatMethods")',
                type: "POST",
               // contentType: "application/json; charset=utf-8",
                data: { 'ClanName': clanName, 'UserToSuspend': userToAdd, 'DateSuspendedTill': SuspensionDate.toUTCString() },
                dataType: "json",
                traditional: true,
                success: function (data, status, xhr) {
                    alert(data);
                },
                error: function () {
                    alert("An error has occured!!!");
                }
            });
        });

解決了這個問題。

該錯誤位於MVC Razor引擎或其他地方。 我可以解釋一下並重新創建錯誤。 我收到錯誤:

無法加載資源:服務器的狀態為500(內部服務器-我的網址-

奇怪的是,在我向PartialView添加一些Razor代碼之前,它一直在起作用。

我的局部視圖以前看起來像(為簡潔起見,省略了某些部分):

@model DataDisplay.Models.AllItems
// ....
@foreach (var item in Model)
   {
      <tr ><td>@item.ID</td><td>@item.UserName</td<td>@item.FullPath</td></tr>
   }

我添加到Razor的簡單代碼似乎給了我一個錯誤,它是一個if語句,該語句使我的代碼如下所示:

@model DataDisplay.Models.AllItems
// ....
@if (Model.Count > 0)
{
  @foreach (var item in Model)
     {
      <tr ><td>@item.ID</td><td>@item.UserName</td<td>@item.FullPath</td></tr>
     }
}

也許您已經看到了不正確的Razor代碼,但是請繼續。

添加代碼后,我立即得到500錯誤,並且在Chrome開發工具中也得到一個指示,指示jQuery中出現jQuery錯誤,該錯誤在jQuery腳本中的一行顯示如下:

xhr.send((s.hasContent && s.data)|| null);

是的,我正在調用jquery.load()在當前頁面中加載partialview。 我四處搜索,然后找到以下SO條目,將其引導至我的答案: Post and Get With Same簽名

但是,使我解決問題的答案是莫爾坦的答案

我將代碼添加到控制器中:

[AcceptVerbs("Get", "Post")]

然后,當我運行時,我在構建時收到警告:

警告11在“ @”字符后出現意外的“ foreach”關鍵字。 進入代碼后,您無需在“ foreach”之類的結構前面加上“ @”前綴。 filename.cshtml 6 10類名

請注意,這會導致500錯誤,但僅在編譯時發出警告。

我從foreach中刪除了多余的@字符,一切正常。

這一切似乎都像是一場完美的錯誤風暴,它會導致錯誤的紅鯡魚,因此我希望這對某人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM