我尝试使用名称和位置属性获取对象。我需要location属性的坐标才能在该位置创建标记。然而,运行此代码会导致Uncaught SyntaxError:位于JSON的位置1处的意外标记o。我在PUT方法中使用了JSON.stringify(data)。
function getLocation(){
var name = $("#username").val();
console.log('getLocation()');
if(name != ''){
$.ajax({
type: 'GET',
url: '../../' + name,
async: true,
success:function(data){
var oData = JSON.parse(data);
var marker = new L.marker(oData.location);
marker.addTo(map);
$("#username").val('');
},
error: function(XMLHttpRequest, textStatus, errorThrown) { alert('Not found'); }
});
}
}

答案 0 :(得分:1)
dataType
设置的 $.ajax
会猜测响应的类型并解析它:
dataType (默认:
Intelligent Guess (xml, json, script, or html)
)您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西将是以字符串形式返回。)
正如Patrick Evans所说,data
已经转换为对象,您不需要使用JSON.parse
。
答案 1 :(得分:1)
可能是你的结果已经解析了JSON
function getLocation(){
var name = $("#username").val();
console.log('getLocation()');
if(name != ''){
$.ajax({
type: 'GET',
url: '../../' + name,
async: true,
success:function(data){
var marker = new L.marker(data.location);
marker.addTo(map);
$("#username").val('');
},
error: function(XMLHttpRequest, textStatus, errorThrown) { alert('Not found'); }
});
}
}
或者如果你获得了一个数组
function getLocation(){
var name = $("#username").val();
console.log('getLocation()');
if(name != ''){
$.ajax({
type: 'GET',
url: '../../' + name,
async: true,
success:function(data){
var marker = new L.marker(data[0].location);
marker.addTo(map);
$("#username").val('');
},
error: function(XMLHttpRequest, textStatus, errorThrown) { alert('Not found'); }
});
}