簡體   English   中英

如何處理服務器對JQuery AJAX請求的兩個單獨響應?

[英]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.

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