[英]How to handle two separate responses from the server to a JQuery AJAX request?
我需要使用AJAX在一次操作中從服務器讀取和寫入一些數據。 我不希望寫入阻止讀取,因此,當然可以在服務器上先讀取並使用該數據進行響應,但是隨后如何警告前端寫入錯誤?
前端是Javascript和JQuery,后端是PHP-或確切地說是Laravel(我認為這個問題與語言無關)。
我的標准JQuery AJAX請求:
$.ajax({
type: 'POST',
url: 'savedata',
dataType: 'json',
data: { data_to_save: JSON.stringify(mydata) }, // JSON encoded data
success: function (data_from_server)
{
// Update UI with data_from_server
},
error: function (data)
{
console.log('Error:', data.responseText);
}
});
}
服務器端(偽代碼):
1. Read requested data from database (using a key in the POST params)
2. Reply to front end with requested data
3. Write data_to_save to the database
4. If there was an error in saving, how to notify the frontend as response has already been sent?
或者,我可以在前端執行兩個單獨的AJAX請求,一個進行讀取,一個進行寫入,但是我只是在代碼中一個接一個地列出它們,還是只在第一個成功塊中觸發第二個? 在前端和后端,兩個AJAX請求似乎效率也低得多。
好.....您可以使用2種方法來完成此操作。
1.拆分過程。
我的意思是首先要求數據。 如果有錯誤,請顯示錯誤。 如果成功請求寫入數據,則獲得響應。如果錯誤顯示錯誤。
2.兩次操作后發送響應
首先讀取數據,然后寫入數據。 發送您的回復,例如
{
"read":{
"status":1
},
"write":{
"status":0,
"error":"the error message"
}
}
您可以做的是,在保存數據的控制器操作中,使用try catch塊。
PHP文件
try
{
save_data()
}
catch(Exception $e)
{
return response->json(['message' => $e->getMessage() ], 500);
}
500表示服務器錯誤狀態。 您可以自己定義它,也可以從Exception對象獲取它。 使用try catch塊可確保ajax調用知道發生了成功/錯誤。
JS文件
在ajax的錯誤功能中,您可以添加data
參數和console.log(data)
,它將捕獲服務器端的錯誤。
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.