通过php从JS槽中检索JSON文件

时间:2017-03-13 作者:Matthieu Ducorps

我知道这个问题已经被问了大概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)

});
马特。

1 个回复
最合适的回答,由SO网友:Matthieu Ducorps 整理而成

我不相信这是最干净的方法,但至少在我找到更有效的方法之前,它是有效的:

function json_gmap(){

  $get_file  = file_get_contents(get_template_directory_uri() . \'/data/my.json\');
  $json_to_array = json_decode($get_file,true);
      die (json_encode($json_to_array));

}
add_action(\'wp_ajax_json_gmap\', \'json_gmap\');
add_action(\'wp_ajax_nopriv_json_gmap\', \'json_gmap\');
基本上,我将Json文件解码为一个数组,并对其重新编码,使其在admin ajax中可用。php。

欢迎任何改进:D

谢谢

马特

相关推荐

WordPress AJAX错误400向远程站点发送数据的错误请求

我正在使用发件人。net获取电子邮件订阅列表。这个网站给了我一些信息,可以将用户的电子邮件添加到订阅列表中。我想使用WordPress ajax来实现这一点。但它返回错误400错误请求。我的代码是:文件ajax新闻脚本。js公司: jQuery(document).ready(function($){ // Perform AJAX send news on form submit $(\'form#fnews\').on(\'submit\', funct