我知道这个问题已经被问了大概100次了,但我找不到一个令人信服的答案。
以下是我的理解:
在PHP端:
var obj= json_encode ($array);
那么
$array
在admin ajax上可用。Json格式的php,
在JS侧:
$.ajax({
url: ajax_url,
data: {
action: \'myphpfunction\',
nonce:mynonce,
},
dataType: "json",
success: success action
});
我陷入困境的地方是,我的源代码不是一个数组或字符串,而是一个json文件,因此所有数据都以json格式存储在服务器端。
也就是说json_encode
在这里没有用处,因为我的源代码已经是json和echo
或aprint
不会使数据在管理ajax上可用。php,但在当前页面上,我正在运行。
因此,我陷入了困境,如何将这个json文件传递到前端,是否有办法使其可用,以便可以像这样完成一个简单的HTTP GET(例如,使用jQuery)?
$.getJSON(\'./path/to/my.json\',data,callback);
附:上下文我正在将一个静态HTML网站迁移到WordPress环境中,其中包括google地图(带有数据)。
因此,基本上,我的问题是在PHP方面,我的数据已经是JSON格式的,需要推送到前端(JS)。
希望问题很清楚
感谢您的任何意见,这可以帮助我更好地了解这是如何工作的。
好心的
EDIT:
这就是我现在正在做的,但它对我来说并不是一个干净的方法,有没有更好的方法来做到这一点?
PHP:
wp_register_script(\'google_map\', get_template_directory_uri() . \'/assets/scripts/map.js\', array(\'jquery\'), \'1.0.0\', true);
wp_localize_script(\'google_map\', \'mdu\', array(
\'nonce\' => wp_create_nonce( \'mdu\' ),
\'ajax_url\' => admin_url( \'admin-ajax.php\' )));
wp_enqueue_script(\'google_map\');
function json_gmap(){
$get_file = file_get_contents(get_template_directory_uri() . \'/assets/scripts/config/mapdata.json\');
$json_to_array = json_decode($get_file,true);
die (json_encode($json_to_array));
}
add\\u action(\'wp\\u ajax\\u json\\u gmap\',\'json\\u gmap\');add\\u action(\'wp\\u ajax\\u nopriv\\u json\\u gmap\',\'json\\u gmap\');
JS:
$.ajax({
url: mdu.ajax_url,
data: {
action: \'json_gmap\',
nonce:mdu.nonce,
},
dataType: "json",
success: this.mapDataLoaded(self, maparea)
});
马特。