【问题标题】:Codeigniter Ajax JSON return not workingCodeigniter Ajax JSON 返回不起作用
【发布时间】:2016-07-30 14:12:35
【问题描述】:

我有一个视图,里面有一个按钮,点击后我想从控制器中检索一些数据。

这是在视图内部:

    <script>
    $('.ajaxBtn').click(function(e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: '/ajaxController',
            data: "",
            dataType:'json',
            success : function(response){ console.log(response); alert(response)}
        });
    });
</script>

我的控制器如下所示:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class ajaxController extends MY_Controller
{
    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
        echo json_encode("datafromajax");
    }


}

我有一个这样定义的路线:

$route['ajaxControl'] = "ajaxController/index";

但是,即使响应为 200,我也没有响应数据。

感谢您的帮助

EDIT2// 从在线资源加载 JSON 工作正常

编辑// 响应:

XHR 已加载(索引 - 200 OK - 39.48300000047311ms - 35.38KB)VM3852:3 http://davids-macbook-pro.local:5757/ajaxController/indexVM3853:3 对象{startedDateTime:“2016-04-09T08:45:16.133Z”,时间: 39.48300000047311,请求:对象,响应:对象,缓存:对象...}缓存:对象__proto__:对象__defineGetter__: defineGetter()defineSetterdefineSetter()lookupGetterlookupGetter()lookupSetter: lookupSetter()构造函数: Object()hasOwnProperty: hasOwnProperty()isPrototypeOf: isPrototypeOf() 属性IsEnumerable: propertyIsEnumerable()toLocaleString: toLocaleString()toString: toString()valueOf: valueOf()get proto: 获得 proto()set proto: 设置 proto()connection: "122019"pageref: "page_7"request: ObjectbodySize: 0cookies: Array[2]headers: Array[11]headersSize:1099httpVersion:“HTTP/1.1”方法: “POST”查询字符串:数组 [0] 网址: “http://davids-macbook-pro.local:5757/ajaxController/index原型: 对象响应:Object_transferSize:35380bodySize:34973content: Objectcookies:Array[0]headers:Array[10]headersSize:407httpVersion: "HTTP/1.1"redirectURL: ""status: 200statusText: "OK"proto: ObjectstartedDateTime:“2016-04-09T08:45:16.133Z”时间: 39.48300000047311timings: Object__proto__: Object

【问题讨论】:

  • 更改 url: 'ajaxController/index',或者只是定义像 var base_url=&lt;?php echo base_url();?&gt; 这样的 Javascript 变量,而不是更改 AJAX URL:base_url+ajaxController/index''
  • 谢谢它现在没有错误了,你能告诉我如何在成功函数中对收到的 json 进行编码吗?
  • 回显 json_encode($yourvalue);进入你的方法
  • 成功 : function(response){ $('#ajaxdiv').html(response); } 不工作
  • 试试这个 console.log(JSON.stringify(response));

标签: php jquery json ajax codeigniter


【解决方案1】:

在json_encode()中将字符串转换为数组

echo json_encode("datafromajax");echo json_encode(['data'=&gt;"datafromajax"]);

【讨论】:

    【解决方案2】:

    你需要定义base_url()

    例如。

    $arr = array("str"=>"datafromajax");
    echo json_encode($arr);
    

    在ajax函数中

    url: <?php echo base_url();?> +'ajaxController'
    
     success : function(response){ console.log(response.str); alert(response.str)}
    

    【讨论】:

    • 即使我明确设置了 header('Content-Type', 'application/json'); 控制器的响应也是 content-type=text/html在控制器中
    • var formData = {}; $.post('davids-macbook-pro.local:5757/ajaxController/index', formData) .done (showResult) .fail(showError);
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    相关资源
    最近更新 更多