【问题标题】:Ajax response shows php text in response pageAjax 响应在响应页面中显示 php 文本
【发布时间】:2016-10-26 12:56:06
【问题描述】:

这是我在视图文件中的 ajax 代码

$('#bidck').click(function (e) {
    e.preventDefault();
    var data = "ajax=ajax";
    $.ajax({
        type: 'POST',
        url: 'http://localhost:8080/test/check',
        data: data,
        success: function (data) {
            console.log(data);
        }
    });
})

代码工作正常,这没有问题,但响应端的问题是我的控制器端。

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

 class test extends CI_Controller
 {

public function check()
{
    $data = array("data" => "true", "m" => "message");
    Header('Content-Type: application/json');
    echo json_encode($data);
}
}

问题是当我在控制器中使用 extends CI_Controller 时,输出看起来像这样 但没有 extends CI_Controller 没关系 {"data":"true","m":"message"}

【问题讨论】:

  • 尝试删除 'Header('Content-Type: application/json');'
  • 已移除 Header('Content-Type: application/json');仍然显示
  • 如果您在输出代码中确实看到&lt;?php - 这里还有其他事情...
  • 您的文件是在您发布时以&lt;?php defined('BASEPATH')..... 开头还是之前有一些代码?
  • 不,这是我的第一行

标签: php jquery ajax codeigniter


【解决方案1】:

扩展为使用 CI_Controller 的类必须始终将首字母大写

在您的情况下:您需要将 test 更改为 Test,并确保您的文件命名相同 (Test.php)

<?php defined('BASEPATH') OR exit('No direct script access allowed');
 class Test extends CI_Controller
 {
  public function check()
  {
   $data = array("data" => "true", "m" => "message");
   Header('Content-Type: application/json');
   echo json_encode($data);
  }
 }
?>

【讨论】:

    【解决方案2】:

    你不见了

    数据类型:'json',

    你可以在后面加上这一行

    数据:数据,

    if ($json === false) {
        // Avoid echo of empty string (which is invalid JSON), and
        // JSONify the error message instead:
        $json = json_encode(array("jsonError", json_last_error_msg()));
        if ($json === false) {
            // This should not happen, but we go all the way now:
            $json = '{"jsonError": "unknown"}';
        }
        // Set HTTP response status code to: 500 - Internal Server Error
        http_response_code(500);
    }
    echo $json;
    

    【讨论】:

    • 伙计们,我已经检查了浏览器中的直接链接,它也只是这样显示,所以它不是 jquery 问题可能是 codeinginter 方面的问题
    • 好的,在 echo json_encode 显示错误之前试试这个我会将它添加到它不会在此处正确显示的答案中
    • 未定义变量:json
    • 输出:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多