0

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 を実行しようとすると、「未定義」と表示されます。

4

1 に答える 1

0

こんにちは、これを試してjson出力を設定してください

$this->output
    ->set_content_type('application/json')
    ->set_output(json_encode(array('foo' => 'bar')));
于 2013-07-12T13:46:05.890 に答える