0

フォームにオートコンプリート入力ボックスを設定しようとしていますが、すべてが機能しているように見えますが、入力ボックスにデータが渡されません。Firebug は成功を報告しますが、何も報告しません。誰かが私のコードを見て、それを引き起こしている可能性のある明白なエラーがあるかどうかを確認できるかどうか疑問に思っていました.

スクリプトは次のとおりです。

(function($){
    $("#town").autocomplete({
        source :"drivers/driver_gettown",
        minLength : 3,
        dataType:'JSON',
        type:'POST'
    });
})(jQuery);

入力ボックス:

   <div class="div">
        <input name="town" id="town"  type="text" class="txtSelect input required" value="<?php echo set_value('town'); ?>" />
        <?php echo form_error('town'); ?>
    </div>

モデルは:

class Driver_model extends CI_Model
{
    public function __construct() {
        // Load the Database
        parent::__construct();
        $this->load->database();
    }


    function driver_get_towns($q)
    {
        // Get a list of Towns
        // Search for row "place_name" from Table called "tbk_towns"
        $this->db->select('place_name');
        $this->db->like('place_name', $q);
        $query = $this->db->get('tbk_towns');
        if($query->num_rows > 0)
        {
            foreach ($query->result_array() as $row)
            {
                //build an array for the towns
                $row_set[] = htmlentities(ucfirst($row['place_name'])); 
            }
            //format the array into json data
            // header('Content-Type: application/x-json; charset=utf-8');
            // echo json_encode($row_set);
            $this->output
                    ->set_content_type('application/json')
                    ->set_output(json_encode($row_set)); 
        }
    }
}

最後にコントローラー:

class Drivers extends CI_Controller 
{

    function __construct() 
    {
        parent::__construct();
        $this->load->model('driver_model');
        $this->load->helper('url', 'form', 'html', 'json');
    }

    function index()
    {
        // Just loads the main Page of the Drivers Area
        $data['metatitle'] = "Auto Ninja | Drivers Members Area | Locally Rated Garages &amp; Mechanics";
        $data['metadescription'] = "Garages &amp Mechanics";
        $data['metakeywords'] = "Car Repair, Car Service, Car MOT";
        $this->load->view('drivers/header_drivers.inc.php', $data);
        $this->load->view('drivers/index');
        $this->load->view('drivers/footer_index.inc.php');
    }


    public function driver_gettown()
    {
        if (isset($_GET['term'])){
            exit;
        }
        $this->load->model('driver_model');
        $q = ucfirst($_GET['term']);
        $this->driver_model->driver_get_towns($q);
    }

}

コメント/ヘルプをいただければ幸いです。

function driver_addjob()
    {
        // Loads the Add New Job Form for the Website
        $this->load->helper('form');
        $this->load->library(array('form_validation', 'session'));
        $this->load->model('driver_model');
        $this ->form_validation->set_error_delimiters('<span class="error">', '</span>');
        // Validate the form fields
        $this->form_validation->set_rules('town', 'Nearest Town or City', 'trim|required|xss_clean');
        // Populates dropdown "town" from the database  ???

        if ($this->form_validation->run() == FALSE)

        {
            $data['metatitle'] = "Auto Ninja | Drivers - Add New Job | Locally Rated Garages &amp; Mechanics";
            $data['metadescription'] = "Garages &amp Mechanics";
            $data['metakeywords'] = "Car Repair, Car Service, Car MOT";
            $this->load->view('drivers/header_drivers.inc.php', $data);
            $this->load->view('drivers/driver_addjob.php');
            $this->load->view('drivers/footer_index.inc.php');
        }
        else 
        {
            $townid = $this->input->post('town');
            $work_jobtitle = $this->input->post('jobtitle');
            $this->driver_model->driver_add_job ($townid);
            $this->session->set_flashdata('message', 'your work request has been added to the system');
            $data['metatitle'] = "Auto Ninja | Drivers - Add New Jobs Success | Locally Rated Garages &amp; Mechanics";
            $data['metadescription'] = "Garages &amp Mechanics";
            $data['metakeywords'] = "Car Repair, Car Service, Car MOT";
            $this->load->view('drivers/header_drivers.inc.php', $data);
            $this->load->view('drivers/driver_addjob_success');
            $this->load->view('drivers/footer_index.inc.php');
        }

    }
4

1 に答える 1

0

わかりました、私はついにこれを理解しました。何らかの理由で応答 URL が http://php.codeigniter.server/drivers/drivers/driver_gettown?term=edに出てくる

そのため、コントローラーは 2 回追加されています。Javaをに更新しました

(function($){
    $("#town").autocomplete({
        source :"driver_gettown",
        minLength : 3,
        dataType:'JSON',
        type:'POST'
    });
})(jQuery);

つまり、コントローラーを含めずに動作します!!! そのため、どのコントローラーでメソッドを見つけるかをどのように知っているかについて少し混乱していますが、誰がそれを気にしますか? おそらくまだ私を悩ませるので、知っておくといいでしょう...おそらくJSON呼び出しがURLにそれをもたらしますか?

于 2013-03-09T21:30:43.143 に答える