【问题标题】:Returning JSON from EE module从 EE 模块返回 JSON
【发布时间】:2013-07-12 10:55:19
【问题描述】:

我在 Expression Engine 中创建了一个模块(使用 codeigniter 框架构建)。

我正在使用 AJAX 提交表单,并希望返回 JSON 响应。

表单通过 AJAX 正确提交,我已经测试了它添加到不同代码的数据库等。

作为 JSON 响应的一些测试代码,我设置了以下内容:

public function placeItem() {

    $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

    echo json_encode($arr);

} 

与:

var options = { 
    success: update,
    url: 'http://www.domain.com/index.php?ACT=41'
}; 

function update(json) {
    alert(json);        
}

$('#wishlist-form').submit(function() { 
    $(this).ajaxSubmit(options); 
    return false; 
}); 

这是返回:

"a":1,"b":2,"c":3,"d":4,"e":5}<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  Cannot modify header information - headers already sent by (output started at /var/sites/d/domain.com/public_html/system/expressionengine/third_party/wishlist/mod.wishlist.php:77)</p>
<p>Filename: core/Common.php</p>
<p>Line Number: 408</p>

</div>

第 77 行是:echo json_encode($arr);

首先,我不知道为什么会显示 PHP 错误。 其次,JSON 会在警报中返回,但如果我尝试执行 json.a,例如它会显示“未定义”。

【问题讨论】:

  • 它看起来像 EE 试图在 echo 之后发送 header 信息,如果您真的知道自己在做什么,请尝试 exit 而不是 echo

标签: php json codeigniter expressionengine


【解决方案1】:

你好试试这个来设置json输出

$this->output
    ->set_content_type('application/json')
    ->set_output(json_encode(array('foo' => 'bar')));

【讨论】:

    猜你喜欢
    • 2016-04-19
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多