0

Ajax 呼び出しでモデル メソッドを呼び出すコントローラー メソッドを呼び出そうとしています。

これが私のAjax呼び出しです:

        $.ajax({
                    type: "POST",
                    async: false,
                                            dataType: "json",
                    url: "<?php echo base_url('siteController/fetchEmployees') ?>",
                    success: function(data) 
                    {
                        html = "<table id='myTable'><thead><tr id='test'><th>ID</th><th>FName</th><th> LName</th></tr></thead><tbody id='contentTable'>";
                        for (var i = 0; i < data.length; i++)
                        {
                            html = html + "<tr  id='trResponses' ><td><div >" + data[i]['ID'] + "</div></td><td><div >" + data[i]['FName'] + "</div></td><td><div >" + data[i]['LName'] + "</div></td></tr>";                        
                        }
                         html = html + "</tbody></table>";
                         $("#resultFrm2").html(html);
                    },
                    error: function() {
                        alert('error');
                    }                
                });

私のsiteControllerには次のメソッドがあります:

 public function fetchEmployees() 
 {
    $this->load->model('user_model');
    return json_encode($this->user_model->getAll());
}

私のモデルメソッドは次のとおりです。

public function getAll() 
{
    $q = $this->db->get('users');        
    if ($q->num_rows() > 0) {
        foreach ($q->result() as $row) {
            $data[] = $row;
        }
        return $data;
    }
}

しかし、コントローラーの戻り値が配列であるため、次のエラーが発生します。

A PHP Error was encountered

Severity: Notice

Message: Array to string conversion

この問題をどのように処理できるか知っていますか?

私の質問が明確でない場合は、さらに明確にする必要がある部分を教えてください。

追加: 私はあなたの提案をすべて実行し、ここでもすべての変更について言及しました! しかし、今では Ajax の出力はありませんが、私のコントローラーでは return json_encode($this->user_model->getAll()); の代わりに 私は var_dump( json_encode($this->user_model->getAll())); を使用します。応答データが見える! ありがとう

4

2 に答える 2

0

編集:

json 配列を返す必要があります

あなたのajaxコールセットで

dataType: "json" 

そしてあなたの fetchEmployees() 関数で

echo json_encode($this->user_model->getAll());

これにより、php 配列が文字列として送信され、ajax 関数によって受信されたときに JavaScript 配列に変換されます。

于 2013-10-24T21:25:56.270 に答える
0

siteController に問題があります。echo は文字列を受け入れて返しますが、配列を渡しています。echo($this->user_model->getAll());に変更したいreturn json_encode($this->user_model->getAll());

json_encodeAJAX 応答は JSON (JavaScript Object Notation) の形式です。最初に行わないと、JavaScript ParseError が発生します。

于 2013-10-24T21:27:25.983 に答える