0

次のスクリプトを持つコントローラーがあります

class get extends CI_Controller
{
    function get_password()
    {
        $this->load->model('fetch_model');
        $user_pass=$this->fetch_model->get_password(); 
        $data['user_pass'] = json_encode($user_pass);
        echo $data['user_pass'];
    }
}

とビューページのスクリプトはこのように

function get_password(){
    $.post("<?php echo base_url();?>admin.php/get/get_password",function(data)
    {      
        for(i=0;i<data.length;i++)
        {
            $('#password').val(data[i].password);
            $('#username').val(data[i].username);
        }
    },"json");
}

モデルで次のスクリプトを使用すると、ajax投稿は完全に機能します。

class fetch_model extends CI_Model
{
    function get_password()
    {
        return  $this->db->query("SELECT * FROM td_admin_user")->result_array();
    }
}

しかし、モデルスクリプトをこれに変更すると、ajaxスクリプトが機能しなくなります

class fetch_model extends CI_Model
{
    function get_password()
    {
        foreach($this->db->query("SELECT * FROM td_admin_user")->result() as $r_pass)
        {
            $pass=$r_pass->password;
            $user=$r_pass->username;
        }
        $user_pass=array('username'=>$user,
                         'password'=>$pass);
        return $user_pass;
    }
}

率直に言って、次のようにデータを送信する必要があります

$user_pass  =   array('username'=>$user, 'password'=>$pass);

result_array()としてではなく

ですから、この文脈で私を助けてください、事前に感謝します

4

1 に答える 1

0

これはバグではありません。各呼び出しで返されるデータの種類も確認しましたか?

JS では、次のものを使用しています。

$('#password').val(data[i].password);

dataインデックス付き配列はどこですか- 正確に何が返されますか->result_array()

しかし、キーベースの配列にしたい:

$user_pass=array('username'=>$user, 'password'=>$pass);

その場合は、JS で for ループを使用するのを忘れて (特に、クエリの結果が 1 行しかない場合)、次を使用する必要があります。

 $('#password').val(data.password);

その代わり。

また、console.log(firebug/開発者ツールを使用している場合) を見て、PHP 側でprint_rまたはを試して、返されるデータ形式を理解してください。var_dump

于 2013-02-04T18:13:24.857 に答える