Google Code Prettify

顯示具有 jQuery 標籤的文章。 顯示所有文章
顯示具有 jQuery 標籤的文章。 顯示所有文章

jquery ajax 如何使用async / await

在jQuery 中,雖然本身不直接支援async/ await,但可以結合現代JavaScript 的Promise和async/await來處理非同步請求。$.ajax本質上返回的是一個Promise對象,這意味著你可以使用async/await來簡化非同步程式碼的寫法。

1. 基本用法

假設你有一個jQuery$.ajax請求,你可以將它包裝在async函數中,並使用await來等待請求完成。

範例程式碼


async function sendDataAsync() { try { let response = await $.ajax({ url: '/YourController/YourAction', type: 'POST', data: { inputData: 'someData' }, contentType: 'application/json' }); console.log('服务器回馈信息:', response); } catch (error) { console.error('发生错误:', error); } }

2. 詳細步驟

1. 定義一個async函數

你可以將AJAX 請求封裝在一個async函數中。這樣,函數在遇到await時會暫停,直到非同步操作完成後繼續執行。

2. 使用await等待AJAX​​ 請求

$.ajax回傳一個Promise,因此你可以使用await來等待它完成,並取得結果。

3. 處理錯誤

使用try/catch區塊來擷取並處理AJAX 請求中的錯誤。

3. 結合async/await和jQuery AJAX 請求

以下是一個更完整的例子,展示如何使用async/await來進行非同步的AJAX 請求,發送資料到伺服器並處理返回資料。

伺服器端程式碼(ASP.NET Core 範例)


[HttpPost] public JsonResult YourAction(string inputData) { var result = new { message = "成功接收数据: " + inputData }; return Json(result); }

前端程式碼(使用async/ await)


async function sendDataAsync() { try { // 发起异步的 AJAX 请求 let response = await $.ajax({ url: '/YourController/YourAction', // 替换为你的 URL type: 'POST', data: JSON.stringify({ inputData: '一些数据' }), // 发送 JSON 数据 contentType: 'application/json', // 指定数据类型 }); // 请求成功时,处理返回的结果 console.log('服务器回馈信息:', response.message); alert('服务器回馈信息: ' + response.message); } catch (error) { // 处理请求中的错误 console.error('发生错误:', error); alert('发生错误: ' + error.statusText); } } // 调用异步函数 sendDataAsync();

4. 處理多個非同步AJAX 請求

你也可以使用async/await來處理多個並行或串列的AJAX 請求。

串行請求(一個接一個執行)


async function sendMultipleRequests() { try { let response1 = await $.ajax({ url: '/api/request1', type: 'GET' }); console.log('请求1完成:', response1); let response2 = await $.ajax({ url: '/api/request2', type: 'GET' }); console.log('请求2完成:', response2); } catch (error) { console.error('请求失败:', error); } }

並行請求(同時執行多個請求)


async function sendParallelRequests() { try { let [response1, response2] = await Promise.all([ $.ajax({ url: '/api/request1', type: 'GET' }), $.ajax({ url: '/api/request2', type: 'GET' }) ]); console.log('请求1和请求2同时完成:', response1, response2); } catch (error) { console.error('请求失败:', error); } }

5. 總結

  • $.ajax回傳一個Promise,你可以用async/await來處理它。
  • 使用async/await可以讓程式碼更具可讀性,避免回調地獄。
  • 用try/catch處理AJAX 請求中的錯誤,確保程式碼健壯。

透過使用async/ await,可以更直觀地編寫非同步程式碼,尤其在處理多個請求時,它比傳統的回呼函數方式更加簡潔清晰。

使用jQuery AJAX 發送資料後,您可以透過回呼函數取得伺服器端傳回的資料

使用jQuery AJAX 發送資料後,您可以透過回呼函數取得伺服器端傳回的資料。如果伺服器端傳回的資料包含ViewBag中的訊息,可以透過JsonResult或部分視圖的HTML 直接傳遞這些訊息。


1. 使用JsonResult返回ViewBag數據

假設在伺服器端,您在Controller中設定了ViewBag,然後將資料通過JsonResult傳回給前端。

伺服器端程式碼


[HttpPost] public JsonResult SubmitData(string inputData) { // 假设进行了一些操作,并设置了 ViewBag ViewBag.Message = "操作成功"; // 将 ViewBag 数据放入一个匿名对象中,并通过 JSON 返回 return Json(new { message = ViewBag.Message }); }

前端jQuery 程式碼


$.ajax({ type: 'POST', url: '/YourController/SubmitData', data: { inputData: yourData }, success: function(response) { // 这里的 response.message 就是服务器端返回的 ViewBag 数据 console.log('服务器回馈信息: ' + response.message); }, error: function(xhr, status, error) { console.error('发生错误: ' + error); } });


2. 使用部分視圖(Partial View)傳回包含ViewBag資料的HTML

您也可以透過傳回部分視圖,將ViewBag資料嵌入到HTML 中,jQuery 可以從傳回的HTML 中提取這些資料。

伺服器端程式碼


[HttpPost]
public PartialViewResult SubmitData(string inputData) { ViewBag.Message = "操作成功"; // 返回部分视图,这里可以是包含 ViewBag 数据的 HTML return PartialView("_PartialViewName"); }

部分視圖_PartialViewName.cshtml


<div id="message"> @ViewBag.Message </div>

前端jQuery 程式碼


$.ajax({ type: 'POST', url: '/YourController/SubmitData', data: { inputData: yourData }, success: function(response) { // 将返回的 HTML 插入到页面的某个元素中 $('#result').html(response); // 从返回的 HTML 中提取 ViewBag 数据 var message = $('#result #message').text(); console.log('服务器回馈信息: ' + message); }, error: function(xhr, status, error) { console.error('发生错误: ' + error); } });


3. 使用TempData傳遞訊息

如果您想要跨請求傳遞數據,您可以使用TempData。以下是如何透過TempData傳遞資料:

伺服器端程式碼


[HttpPost] public IActionResult SubmitData(string inputData) { TempData["Message"] = "操作成功"; return RedirectToAction("SomeAction"); // 重定向到一个新的视图 } public IActionResult SomeAction() { ViewBag.Message = TempData["Message"]; return View(); }

前端jQuery 程式碼

如果使用TempData,通常會在前端顯示新載入的頁面,而不直接在AJAX 回呼中取得資料。


總結

使用jQuery AJAX 發送請求後,可以透過回呼函數的response參數來取得伺服器端傳回的JsonResult資料或HTML 部分視圖。你可以透過JsonResult直接傳遞ViewBag數據,或透過部分視圖傳回包含ViewBag數據的HTML 片段。

關於jquery.tinymce.min.js有那些較好的學習或範例資料?

以下是一些學習和範例資料,用於了解和使用 jquery.tinymce.min.js,這些資源可以幫助你更好地掌握如何將 TinyMCE 與 jQuery 結合使用。

官方資源

  1. TinyMCE 官方文檔

    • TinyMCE 官方網站提供了詳細的文檔和範例,可以幫助你了解如何配置和使用 TinyMCE 與 jQuery 結合。
    • TinyMCE 官方文檔
  2. TinyMCE jQuery 整合指南

    • 這是 TinyMCE 官方提供的專門針對 jQuery 整合的文檔,內容詳盡且有許多範例。
    • jQuery Integration

在線範例和教程

  1. CodePen

    • CodePen 是一個非常好的資源,你可以在這裡找到許多關於 TinyMCE 和 jQuery 的範例代碼。
    • 搜索 "TinyMCE jQuery" 或者 "jquery.tinymce.min.js" 可以找到相關的範例。
    • CodePen
  2. JSFiddle

    • JSFiddle 是另一個很好的在線編輯器和分享平台,你可以找到和創建 TinyMCE 與 jQuery 的範例。
    • JSFiddle

博客和文章

  1. Dev.to

    • Dev.to 上有許多開發者分享的博客和文章,涵蓋了各種技術主題,包括 TinyMCE 和 jQuery 的使用。
    • 搜索 "TinyMCE jQuery" 可以找到相關的文章。
    • Dev.to
  2. Medium

    • Medium 上也有許多開發者分享的文章,可以幫助你了解 TinyMCE 與 jQuery 的整合和使用。
    • Medium

教學視頻

  1. YouTube
    • YouTube 上有許多開發者錄製的教學視頻,演示了如何在不同的項目中使用 TinyMCE 和 jQuery。
    • 搜索 "TinyMCE jQuery tutorial" 可以找到相關的視頻。
    • YouTube

簡單範例

下面是一個簡單的範例,展示如何在 ASP.NET Core 項目中使用 jquery.tinymce.min.js。

1. 引入必要的資源

在你的視圖中引入 jQuery 和 TinyMCE:

html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/jquery.tinymce.min.js" referrerpolicy="origin"></script> </head> <body> <form method="post"> <textarea id="mytextarea">Hello, World!</textarea> <button type="submit">Submit</button> </form> <script> $(document).ready(function() { $('#mytextarea').tinymce({ language: 'zh_TW', // 設置語言為繁體中文 plugins: 'link image', // 僅啟用必要的插件 valid_elements: 'p,b,i,strong,em,a[href|title],ul,ol,li' // 僅允許這些元素和屬性 }); }); </script> </body> </html>

2. 設置 ASP.NET Core 控制器和視圖

創建一個控制器來處理表單提交:

csharp

using Microsoft.AspNetCore.Mvc; public class HomeController : Controller { [HttpGet] public IActionResult Index() { return View(); } [HttpPost] public IActionResult Index(string content) { // 在這裡處理提交的內容,並執行必要的安全檢查 ViewBag.Content = content; return View(); } }

創建視圖 Index.cshtml:

html

@{ ViewData["Title"] = "Home Page"; } <form method="post"> <textarea id="mytextarea" name="content">Hello, World!</textarea> <button type="submit">Submit</button> </form> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/jquery.tinymce.min.js" referrerpolicy="origin"></script> <script> $(document).ready(function() { $('#mytextarea').tinymce({ language: 'zh_TW', // 設置語言為繁體中文 plugins: 'link image', // 僅啟用必要的插件 valid_elements: 'p,b,i,strong,em,a[href|title],ul,ol,li' // 僅允許這些元素和屬性 }); }); </script> @if (ViewBag.Content != null) { <div> <h2>Submitted Content</h2> <div>@Html.Raw(ViewBag.Content)</div> </div> }

總結

通過這些資源和範例,你可以更深入地了解如何在 ASP.NET Core 中使用 jquery.tinymce.min.js,並確保使用過程中的安全性。如果你有任何具體的問題或需求,可以隨時查閱上述資源或尋求社區的幫助。