【问题标题】:How to pass JSON object from Controller to view如何将 JSON 对象从 Controller 传递给视图
【发布时间】:2016-07-28 01:51:50
【问题描述】:

关于这个主题有很多线程,但我找不到任何使用 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);
} 

[更新] 在提供答案的代码之后,我现在得到一个 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 );});

    });

【问题讨论】:

    标签: php jquery json parsing


    【解决方案1】:

    试试这个

        <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);
    } 
    

    【讨论】:

      【解决方案2】:

      如上所述,您没有输出 JSON,也没有设置内容类型。但是我注意到了别的东西,你没有分配 post 请求 (JSON) 的返回类型。

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

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

      【讨论】:

      • 感谢您的回答。但是现在,我得到一个 Json.parse 错误。:JSON 数据后出现意外的非空白字符
      猜你喜欢
      • 1970-01-01
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多