如何在JavaScript中使用db/php中的JSON
我正在使用一个地图插件来渲染一些数据。数据来自数据库,并进入一个json文件-脚本工作得很好。我决定直接使用php输出的数据,而不是生成json文件。出于某种原因,javaScript不接受直接的php输入。我正在使用codeigniter MVC 以下是当前有效的示例代码:如何在JavaScript中使用db/php中的JSON,javascript,jquery,Javascript,Jquery,我正在使用一个地图插件来渲染一些数据。数据来自数据库,并进入一个json文件-脚本工作得很好。我决定直接使用php输出的数据,而不是生成json文件。出于某种原因,javaScript不接受直接的php输入。我正在使用codeigniter MVC 以下是当前有效的示例代码: $.getJSON('_data/index/data.json', function(data){ ... 以下是我尝试过的: var dataMap = '<? print $mapData;?>';
$.getJSON('_data/index/data.json', function(data){ ...
以下是我尝试过的:
var dataMap = '<? print $mapData;?>';
$.getJSON(dataMap, function(data){...
编辑
$mapData是
FOREACH LOOP
$retdata['countries'][] = strtoupper($row->code);
$retdata['num'][] = $row->num;
ENDFOREACH LOOP
$retdata['countries'] = array_combine($retdat['code'], $retdata['num']);
$retdata = json_encode($retdata);
然后像平常一样将其打印到文件中。这是到模型中,然后我将其传递到控制器,然后传递到视图中。该字符串与我在文件中的
$dataMap
中的字符串和发送到视图中的字符串相同。如果您只是想直接将JSON数据插入javascript变量(而不是使用AJAX),那么您根本不需要调用getJSON
。就像这样直接写对象
var js_object = <?php echo $mapData; ?>;
alert(js_object.countries.AL);
alert(js_object.countries.GB);
var js_object=;
警报(js_object.countries.AL);
警报(js_object.countries.GB);
请注意,PHP字符串没有回显到引号中,这意味着您直接创建了一个javascript对象文本,而不是一个需要从更新的代码中通过
JSON.parse()
解析为对象的字符串,看起来您根本不需要调用getJSON
,因为您已经有了json数据
只需将
分配给javascript代码中的一个变量并直接使用它。直接将dataMap用作JSON即可
alert(dataMap.countries.AL); //output: 1
虽然给出的答案确实有效,但您可能希望以不同的方式实现它,以便代码更易于维护 您可以有一个控制器来处理所有api调用,并将所有与映射相关的函数放在那里 如果您的控制器被称为
maps
,并且您创建了一个countries
方法,该方法从数据库获取数据并返回带有国家的json,那么在JS中您可以执行以下操作:
$.get('maps/countries', function(data){
console.log(data.countries);
//outputs: {"AL":"1","GB":"1","RS":"1","BG":"6","CA":"3","AT":"2","CD":"1"}
};
更多关于Try echo:
var-dataMap=''
你能告诉我们什么是$mapData
吗<代码>$。getJSON是向服务器发送ajax请求的快捷方式。i、 它应该是返回json数据的路径/url。打印($mapData)与上面的json数据相同。当我使用echo时,控制台会将json添加到链接中,并打印403(禁止)jquery.min.js:2添加有关$mapData以及如何创建它的更多信息。太好了,看起来您可以直接使用$mapData,因为它已经是一个json字符串。我想我没有遵循您的意图。如果在创建页面源代码时将JSON对象注入javascript变量,则根本不需要任何get
或getJSON
。然后,您可以在您想要的任何函数中使用此对象。有关如何使用对象的示例,请参见我的更新答案。
alert(dataMap.countries.AL); //output: 1
$.get('maps/countries', function(data){
console.log(data.countries);
//outputs: {"AL":"1","GB":"1","RS":"1","BG":"6","CA":"3","AT":"2","CD":"1"}
};