0

ギャラリー内の 1 つのアイテムにカーソルを合わせると、AJAX 呼び出しの結果を情報ウィンドウに表示したいと考えています。私はCIが初めてで、なぜそれが機能しないのか理解できないようです。私は他の投稿をチェックしました..愛はありません。

誰かが私のエラーを指摘できますか?

これは、ホバーで起動する私のjavascript関数です

function showDataWindow(){
    $.post('index.php/home/getMoreInfo', { ID: thisID},
        function(data) {
             var moreInfo = $.parseJSON(data);
             alert(data); // just checking
             .. build my HTML with results and fade in ..
});};

ここに私のコントローラーの関連するメソッドがあります

public function getMoreInfo()
{
    $answer = "unsigned";
    $ID = $_POST['ID'];
    $this->load->model('Artist_model');
    $assocReturned = $this->Artist_model->get_more_info($ID);
    echo json_encode($assocReturned);
}

そして、これが私のArtist_modelです

public function get_more_info($ID)
{
    $query = $this->db->query("SELECT * FROM NOIRusers WHERE UID=$ID");
    $assoc = array();

    foreach($query->results() as $r) // there should be only one result .. do this different?
    {   
        $assoc['memberID'] =$r['UID'];
        $assoc['firstName'] =$r['UFname'];
        $assoc['lastName'] =$r['ULname'];
        .... a lot more like this ...
    }
    return $assoc;
}

500 (内部サーバー エラー) が発生し続けます。ところで、データベースライブラリをロードしました。

問題は、データベースの応答をどのように処理しているかだと思います。私が理解しているように.. $this->db->query() はデータベースオブジェクトを提供し、それを foreach を介して連想配列に繰り返します。その配列をコントローラーに返します。コントローラーはそれを json_encode し、javascript にエコーします。

何が正しくないのですか?

4

2 に答える 2

4

GZIP 圧縮が原因であると指摘した Zathrus の功績を称えたいと思います。

CodeIgniter では、GZIP 圧縮が有効になっているコントローラーから直接出力することはできません。これは、出力クラスが中断されるためです。この問題を回避するには、次のようにします。

コントローラーで:

$data['json'] = json_encode($assocReturned);
$this->load->view('json', $data);

views/json.phpまたはあなたが作るどんなビューでも):

<?php echo $json;

問題は既に解決されており、GZIP 圧縮とは関係ありませんでしたが、最終的にサイトを最適化して CI で有効にした場合、コードをそのままにしておくと、この問題が発生します。

于 2012-09-19T20:59:10.343 に答える
2

CI でエラー報告を有効にしていますか? それは何が間違っていないかを教えてくれるはずです。

また、間違った .htaccess ファイルである可能性もあります。

または - GZIP 圧縮を使用している場合、自分でエコーアウトしようとすると問題が発生します。CodeIgniter は、その gzip 出力と互換性のあるビューを使用します。echo はページを壊し、500 エラーを取得します。

于 2012-09-19T20:31:14.710 に答える