Javascript ajax请求成功时不显示数据
在Laravel,我有一个控制器:Javascript ajax请求成功时不显示数据,javascript,json,laravel,leaflet,Javascript,Json,Laravel,Leaflet,在Laravel,我有一个控制器: 公共函数getData() { $data=Bencana::all()->pull('coord'); 答复(数据); } 这是从我的数据库和我的JS加载数据的代码,如下所示: $.ajax({ 类型:“POST”, url:“{route('getdata')}}”, 标题:{'X-CSRF-TOKEN':“{{{CSRF_TOKEN()}}}”, 数据类型:“json”, 成功:功能(响应){ //控制台日志(响应); var layer=L.geoJ
公共函数getData()
{
$data=Bencana::all()->pull('coord');
答复(数据);
}
这是从我的数据库和我的JS加载数据的代码,如下所示:
$.ajax({
类型:“POST”,
url:“{route('getdata')}}”,
标题:{'X-CSRF-TOKEN':“{{{CSRF_TOKEN()}}}”,
数据类型:“json”,
成功:功能(响应){
//控制台日志(响应);
var layer=L.geoJson(响应{
风格:myStyle
}).addTo(地图);
}
});
该请求没有在我的地图上显示圆、点、多边形数据。我被困在这里了
谁能告诉我下一步该怎么办
编辑:控制台中没有错误,但我的数据库有不同的输出
{type:manythings,other:{}
我将带有json类型的坐标保存到我的表中。当我尝试返回地图时,控制台显示:
{\type : \"somelikethat", \another :\"{}}
如果在ajax中设置
dataType:'json'
,则必须在控制器中使用return response()->json($data)代码>
如果要为数据设置一个键,可以尝试以下操作:returnresponse()->json(['data'=>$data])代码>正如建议的那样,我可能会建议从控制器返回JsonResponse
,不过,如果您返回的是数组,它应该已经转换为json。
所以我要改变的第一件事是控制器响应:
use Illuminate\Http\JsonResponse;
public function getData()
{
$data = Bencana::all()->pluck('coord');
return new JsonResponse($data);
}
接下来要检查的是实际需要传递给geoJson
方法的内容。我想说清楚,你在用什么
如果是这样的话,在登录页上有一个json结构的示例,您需要传入,尽管我相信您已经知道了。只需将您从控制器发送的响应与推荐的结构进行比较——可能存在一些问题
通过查看他们的示例,您需要json对象的type
和geometry
属性
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [125.6, 10.1]
},
"properties": {
"name": "Dinagat Islands"
}
}
很抱歉,如果这些事情听起来很明显,但有时重复检查会有所帮助。您能尝试一下响应。数据?@Rolf OP使用的是jQuery,而不是axios。控制台.log(响应)
显示什么?啊,好的!有一段时间没有使用jQuery;)您是否收到任何控制台错误?当代码运行时,L
和map
是否已正确设置?