Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中使用db/php中的JSON_Javascript_Jquery - Fatal编程技术网

如何在JavaScript中使用db/php中的JSON

如何在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;?>';

我正在使用一个地图插件来渲染一些数据。数据来自数据库,并进入一个json文件-脚本工作得很好。我决定直接使用php输出的数据,而不是生成json文件。出于某种原因,javaScript不接受直接的php输入。我正在使用codeigniter MVC

以下是当前有效的示例代码:

$.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"}
};