我已经使用drupal和rest创建了一个API服务。
如果我在chrome中复制并粘贴URL,我会得到这样的响应
这是我的原始输出
[{"teste":"Instala\u00e7\u00e3o do Microsoft Intune nos Dispositivos M\u00f3veis"},{"teste":"App 3 Minutos"},{"teste":"SD-Wan"}]
和解析的输出
[
{
"teste": "Instalação do Microsoft Intune nos Dispositivos Móveis"
},
{
"teste": "App 3 Minutos"
},
{
"teste": "SD-Wan"
}
]
到目前一切尚好。
然后,我创建了一个指向相同链接的ajax请求,并请求命中"error“函数,但得到的响应是:
{"readyState":4,"responseText":"[{\"teste\":\"Instala\\u00e7\\u00e3o do Microsoft Intune nos Dispositivos M\\u00f3veis\"},{\"teste\":\"App 3 Minutos\"},{\"teste\":\"SD-Wan\"}]","status":200,"statusText":"OK"}
几乎和预期的一样。
在chrome控制台上,我得到了http代码200,并且预览结果与我的API输出相匹配。
我的jQuery ajax代码
$.ajax({
type:"GET",
url:"http://teste.dd:8083/timeline",
dataType: 'jsonp',
success: function(data) {
var kk = JSON.stringify(data);
$('.teste').text(JSON.parse(kk));
alert('entrou');
},
error: function (data) {
var kk = JSON.stringify(data);
$('.teste').text(kk);
alert('nao');
}
});
请求总是命中error函数,但no在控制台上抛出任何错误,http代码始终为200。
我用ajax请求做错了什么吗?
使用CURL request时,一切都很好,但我需要使用ajax来完成这个请求,因为我不想在每个请求中都加载页面(将有不同的请求)。
如果有人有另一种方法,欢迎使用:)
提前谢谢。
发布于 2021-03-24 16:00:34
如果您使用的是JSONP dataType,那么您需要稍微改变一下响应的结构。callback
参数会自动添加到请求中,并且在响应时需要使用它。例如,如果请求的格式为
GET /some-url?callback=jQuery8761232
结果必须是
[{"teste":"Instala\u00e7\u00e3o do Microsoft Intune nos Dispositivos M\u00f3veis"},{"teste":"App 3 Minutos"},{"teste":"SD-Wan"}]
则响应正文必须为
jQuery8761232([{"teste":"Instala\u00e7\u00e3o do Microsoft Intune nos Dispositivos M\u00f3veis"},{"teste":"App 3 Minutos"},{"teste":"SD-Wan"}])
https://stackoverflow.com/questions/66772918
复制相似问题