如何处理服务器对JQueryAJAX请求的两个独立响应



我需要使用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请求在前端和后端的效率似乎也要低得多。

嗯。。。。。你可以用两种方法来做。

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),它将从服务器端捕获错误。

祝你好运!

最新更新