我需要使用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请求似乎效率也低得多。
答案 0 :(得分:0)
好吧.....您可以用两种方法做到这一点。
1。拆分过程。
我的意思是首先要求数据。如果有错误,请显示错误。如果成功请求写入数据,则获得响应;如果错误显示错误。
2。两次操作后发送响应
先读取数据,然后写入数据。像这样发送您的回复
{
"read":{
"status":1
},
"write":{
"status":0,
"error":"the error message"
}
}
答案 1 :(得分:0)
您可以做的是,在保存数据的控制器操作中,使用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)
,它将从服务器端捕获错误。
祝你好运!