![](/img/trans.png)
[英]Why ajax call not returning success or error though controller sends data?
[英]successful ajax call not returning to success function
我正在處理一個 .NET Core MVC 應用程序,我在局部視圖中添加了 JavaScript 代碼,JavaScript 代碼命中 controller 的 function 但它沒有命中 881567 調用 883400406589204 的成功下面是我的 JavaScript 代碼,代碼在頁面加載時執行
<script type="text/javascript"> $(document).ready(function () { debugger; $.ajax({ type: 'GET', url: '@Url.Action("getMenurights","Home")', dataType: 'json', contentType: "application/json; charset=utf-8", success: OnSuccessMenuRights, failure: function (data) { alert(data); } }); }); </script>
controller 代碼:-
public string getMenuRights()
{
string result = "";
if (!string.IsNullOrEmpty(HttpContext.Session.GetString("UserId")as string))
{
Home objHome = new Home();
DataTable dtMenuRights = new DataTable();
dtMenuRights = objHome.GetMenuRights(HttpContext.Session.GetString("UserId").ToString());
List<DataRow> MenuList = dtMenuRights.AsEnumerable().ToList();
TempData["MenuRights"] = dtMenuRights;
if (MenuList.Count > 0)
{
ViewBag.MenuList = MenuList;
}
TempData.Keep("MenuRights");
//var x = TempData["MenuRights"];
JsonSerializerSettings jss =
new JsonSerializerSettings { ReferenceLoopHandling =ReferenceLoopHandling.Ignore };
result = JsonConvert.SerializeObject(dtMenuRights, Formatting.Indented, jss);
}
return result;
}
試試這些
如果用戶沒有jQuery
,您將返回空字符串。從 1.9 開始,jQuery 拒絕空響應。 響應應為null
或{}
,而不是空字符串。 它還拒絕格式錯誤的JSON
但在這種情況下不太可能,因為您正在使用庫生成JSON
。
可能是因為您的返回類型是string
,因此Content-Type
header 變為text/plain
。 嘗試使用其中之一
jQuery
電話中使用dataType: 'text json'
。 這將告訴 jQuery 將文本視為JSON
。JsonResult
作為返回類型返回JSON
而不是來自 MVC controller 的string
。 這應該會導致Content-Type
header 被設置為application/json
。 這是詳細規范(請參閱dataType
)
它沒有成功撥打 Ajax 的 function
根據您的代碼,我們可以發現您的操作方法getMenuRights()
向消費者返回純文本字符串,您可以將dataType
選項修改為'text'
,如下所示。
$.ajax({
type: 'GET',
url: '@Url.Action("getMenurights","Home")',
dataType: 'text',
success: OnSuccessMenuRights,
failure: function (data) {
alert(data);
}
});
此外,要解決 Ajax 請求相關問題,您可以嘗試檢查您在瀏覽器 F12 開發者工具網絡選項卡中發出的 ajax 請求的響應。 並檢查您發出的請求(http 400 錯誤)或服務器端(http 500 錯誤)等是否有問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.