如何从JSON对象中检索带有坐标的变量

How to retrieve a variable with coordinates from a JSON object

本文关键字:坐标 变量 检索 JSON 对象      更新时间:2023-09-26

我试图获得一个对象的名称和位置属性。我需要location属性的坐标来在那个位置创建一个标记。然而,运行这段代码会导致Uncaught SyntaxError:位置1中JSON中的意外token o。我使用JSON.stringify(data)在我的PUT方法。

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'); }
		});
	}
}

可能是你的结果已经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'); }
      });
    }

$.ajax与默认的dataType设置将猜测响应的类型并解析它:

dataType(默认:Intelligent Guess (xml, json, script, or html))

期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型来推断它(XML MIME类型将生成XML,在1.4中JSON将生成JavaScript对象,在1.4中脚本将执行脚本,其他任何内容将作为字符串返回)。

因此,正如Patrick Evans所提到的,您的data已经转换为对象,您不需要使用JSON.parse