如何从Controller传递JSON对象到视图

时间:2016-04-07 09:21:51

标签: php jquery json parsing

关于这个主题有很多线程,但我找不到任何使用PHP的线程。我想将json对象传递给视图,稍后我将使用返回的json对象更新元素。 这是我的代码: 视图:

<input type="submit" class="button" name="insert" value="load"/>

<script>   
jQuery(document).ready(function() {  
    var $ = jQuery;    
    var baseUrl = [location.protocol, '//', location.host, location.pathname].join('');
    $('.button').click(function(){ 
        var clickBtnValue = $(this).val();
        var ajaxurl = baseUrl+"?action=load";   
        data =  {'action': clickBtnValue};  
        $.post(ajaxurl, {}, function (result) {
            alert(result);
        });  
    });

});
 </script>

控制器是:

<?php
set_include_path(get_include_path().':../');    
require_once('_inc/common.php');   
$action = req('action');

if ($action == 'load') {
    $result = parse_ini_file('test.ini');   
    $json = json_encode($result);
} 

[UPDATE] 在提供答案的代码之后,我现在得到一个Json.parse错误。所以我再次编辑了我的代码,但错误仍然存​​在,我在线查看我的Json是否是一个有效的json并且验证器上没有错误。

 $result = parse_ini_file($config_file);
$json = json_encode(array($result),JSON_HEX_QUOT); 
var_dump($json);
header('Content-Type: application/json');

查看

var request = $.ajax({

                          url: ajaxurl,
                          method: "POST",
                          data: {},
                          dataType: "json"
                      }); 
        request.done(function( msg ) {console.log("d");});       
        request.fail(function( jqXHR, textStatus ) {console.log( "Request failed: " + textStatus );});

    });

2 个答案:

答案 0 :(得分:0)

如上所述,您没有输出JSON,也没有设置内容类型。但我注意到了其他一些事情,你没有指定发布请求的返回类型(JSON)。

$.post(url, {}, function (data) {
     alert(data);
}, 'JSON');  

还要确保编码数组而不是false值,parse_ini_file在失败时返回false。

答案 1 :(得分:0)

试试这个

    <script>   
jQuery(document).ready(function() {  
    var $ = jQuery;    
    var baseUrl = [location.protocol, '//', location.host, location.pathname].join('');
    $('.button').click(function(){ 
        var clickBtnValue = $(this).val();
        var ajaxurl = baseUrl+"?action=load";   
        data =  {'action': clickBtnValue};  
        $.post(ajaxurl, {}, function (result) {
            var json =JSON.parse(result);
            console.log(json); //see in browser console
        });  
    });

});
 </script>

控制器是:

<?php
set_include_path(get_include_path().':../');    
require_once('_inc/common.php');   
$action = req('action');

if ($action == 'load') {
    $result = parse_ini_file('test.ini');   
    echo json_encode($result);
}