我已经创建了一个API,我的AJAX帖子向它发送了值。AJAX确实发布了,而我的laravel确实处理了这些值。我的问题是回调将值返回到我的AJAX帖子。在执行控制台日志时,AJAX不会返回成功部分中的结果。我希望api的结果可以使用数据来确定我的条件。目前,控制台日志甚至都不返回值。但是,在预览下的铬检查器中,它显示了API的响应,而不是在“成功”部分。
阿贾克斯
var fname = "Joe";
var lname = "Test";
var processUrl = "api.example.com/z1";
$.ajax({
type: 'POST',
url: processUrl,
data: {"name": fname,"surname": lname},
dataType: 'json',
success: function(res){
console.log(res);
if(res.length >= 1){
$('#display').val(res.name);
}
}
});
PHP
public function checkResults(Request $request){
$name = $request->name." ".$request->surname;
$result = array();
$result['name'] = [$name];
return response()->json($result,201);
}
发布于 2019-10-09 21:48:42
首先,最好使用200 OK响应代码(而不是201)返回。
注:如果您只想立即得到问题的答案,您可以看到这个答案的最后一部分(使用“完成/失败”结构而不是“成功/错误”)。
附加信息:
客户机(前端)<->API<->服务器(后端)开发人员使用的模式很多。几乎所有的API都没有任何500个服务器错误代码。但是API结构之间也存在许多不同之处。
这类方法将在try{}catch()下编写,并且只返回200,但该消息也可以模拟为错误(例如)。
AJAX .done()函数替换方法.success(),后者在jQuery 1.8中被废弃。这是成功回调函数的另一种构造(与前面一样:" success : function (){.}“)。
AJAX .fail()函数替换方法.error(),后者在jQuery 1.8中被废弃。这是完整回调函数的替代结构(如前面的"error: function (){.}“)。
注意:.error()回调是对HTTP错误调用的,但如果响应上的JSON解析失败,也会调用回调。如果响应代码为200/201,但仍会引发错误回调,则可能会发生这种情况。
发布于 2019-10-09 21:38:14
发布于 2019-10-09 21:54:49
由于Ajax调用的异步特性,不将它们放在程序的正常执行流程中。请参阅这个职位以获得更多的洞察力。
解决问题的一个快速方法是在函数中包含ajax调用,并随时调用该函数,以便与服务器异步交互。
var fname = "Joe";
var lname = "Test";
var processUrl = "api.example.com/z1";
ajaxCall();
function ajaxCall() {
$.ajax({
type: 'POST',
url: processUrl,
data: {"name": fname,"surname": lname},
dataType: 'json',
success: function(res){
console.log(res);
if(res.length >= 1){
$('#display').val(res.name);
}
},
error: function() {
console.log('error');
}
});
}
此外,在ajax调用设置中包含一个错误函数,以处理ajax请求失败的情况。有关此操作的替代样式,请参见这个答案。
https://stackoverflow.com/questions/58311781
复制相似问题