1

私は CodeIgniter プロジェクトに取り組んでおり、ajax を使用してコントローラーからデータを返す際に問題が発生しました。

コントローラ:

function outputAjax()
    {
        $this->load->model('my_model');
        $data['results'] = $this->site_model->getInfo();
        $this->output->set_output(json_encode($data));
    }

モデル:

function getInfo()
{
    $this->db->order_by('PubDate','DESC');
    $query = $this->db->get('Articles', 50);

        return $query->result();
}

ビューの Ajax 関数:

<div id="article-area">
    <p>Hey this is where the ajax call should output!</p>

</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" language="Javascript">
 jQuery(document).ready(function(){     
      $.ajax({
url: 'http://localhost/project/index.php/my_controller/outputAjax',
dataType:'json',
success: function(data) {
    $.each(data, function(index,item){
        $("#article-area").append('<div><b>' + item.id + '</b></div><hr />');

    });
}
      });

});

PHP foreach ループを使用してデータを正常に出力できますが、現在はそれを ajax を使用して変換しようとしています。私が正しければ、出力されるデータはオブジェクトの配列です。各「オブジェクト」には、id、title、url、PubDate、Source などの 6 つほどのデータ フィールドが含まれています。

私は何かに ajax を使用することにかなり慣れていませんが、問題をデバッグしようとして、Chrome インスペクトを使用して「ネットワーク」をチェックすると、ajax 呼び出しが表示され、応答タブに表示されます。必要なすべてのデータがこのようにここに表示されます:

{"results":[{"id":"1","Source":"My Source","Title":"My Title". . . .

データは応答に表示されますが、ページに何も表示されないか、ajax 呼び出しを変更すると UNDEFINED を出力できます。

私が達成しようとしている最終的な結果は、ajax 呼び出しからのデータを含むページ上の約 10 個ほどの div です。それは私の副次的な質問ももたらします...

私のモデルは、データベースから 50 行のデータを返します。現在、すべてをjson形式でajax関数に渡しています。最初はそのデータの 10 行のみを使用し、その後、そのページで決められた時間にわたって残りの行を使用します。最初に50行すべてをajax呼び出しに出力し続け、必要に応じて使用するか、モデルから最初に使用されるものだけにデータを制限するのが最善ですか?

CIを使用していくつかのajaxチュートリアルを実行しましたが、それらはすべてPOSTを使用しており、document.readyで実行され、ユーザーの操作なしで実行されているものをまだ見つけていません. また、データを出力するにはいくつかのさまざまな方法が必要であることに気付きました。このように使用される .append() .after() および .value() の使用を見てきましたが、私の特定のケースでは機能しないようです...

助けてくれてありがとう!

4

1 に答える 1

3

データが単なる配列である場合、コードは機能します。ただし、データ配列はresultsオブジェクトのプロパティに含まれています。

変更each:

$.each(data.results, function(index,item){...

resultsまたは、配列をphp配列に入れずに送信するだけです

$data = $this->site_model->getInfo();
于 2013-01-04T02:32:18.293 に答える