【问题标题】:CodeIgniter : Setting up jQuery and post data to Controller using jQueryCodeIgniter : 设置 jQuery 并使用 jQuery 将数据发布到控制器
【发布时间】:2012-06-02 01:22:09
【问题描述】:

我加了

<script type="text/javasript" src="<?=base_url()?>js/jquery-1.7.2.min.js"></script>

application/views/templatess/header.php 并使用我编写的 jQuery 将数据发布到 Controller

<script>

$(document).ready(function(){

    $('#submit').click(function() {
        $.ajax({
            type : 'POST',
            url : '/projects/create',
            data: {
                pro_name : $('#pro_name').val()
            },
            success:function (data) {
                $("#log_msg").html(data);
            }          
        });
    });

});
</script>

在我的视图文件中:application/views/project/create.php 并且控制器存在于 application/controllers/projects.php

在我看来名为 create.php 的完整代码是:

<label for="pro_name">Project Name</label>
<input type="input" id="pro_name" name="pro_name" />
<br />
<input type="submit" id="submit" name="submit" value="Create" />

<script>

$(document).ready(function(){

    $('#submit').click(function() {
        $.ajax({
            type : 'POST',
            url : '/projects/create',
            data: {
                email : $('#pro_name').val()
            },
            success:function (data) {
                $("#log_msg").html(data);
            }          
        });
    });

});
</script> 

我的控制器名为项目包含

class Projects extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        $this->load->model('projects_model');
        $this->load->helper('url');
        $this->load->helper('html');

        $this->load->helper('form');
        $this->load->library('form_validation');
    }

    public function create()
    {
        echo $this->input->post('pro_name');

        $data['title'] = 'SPARCS | Create Project';

        $this->form_validation->set_rules('pro_name', 'Name', 'required');
        $this->form_validation->set_rules('pro_client', 'Client', 'required');
        $this->form_validation->set_rules('pro_loc_city', 'City', 'required');
        $this->form_validation->set_rules('pro_loc_state', 'State', 'required');
        $this->form_validation->set_rules('pro_size', 'Project Size', 'required');      
        $this->form_validation->set_rules('pro_desc', 'Description', 'required');

        if ($this->form_validation->run() === FALSE)
        {
            $this->load->view('templates/header', $data);   
            $this->load->view('projects/create');
            $this->load->view('templates/footer');

        }
        else
        {
            // If project name already exists?

            $query = $this->projects_model->if_exists($this->input->post('pro_name'));

            if ( sizeof($query) == 0) {

                //$this->projects_model->set_project();             
                $data['message'] = 'Add successfully';

            } else {

                $data['message'] = 'Project name already exists';
            }

            $this->load->view('projects/log_message', $data);
        }
    }
}

但浏览器显示$ is not defined

现在请告诉我如何在 CodeIgniter 中设置 jQuery,以及将数据传递到 controller 并显示从 发回的响应的正确方法是什么>控制器

【问题讨论】:

  • 浏览器的哪个位置显示$ is not defined?你确定你的 jQuery 路径是正确的吗?
  • 在 firebug 中,是的 jquery 位于 root/js/jquery.js 我看到了查看源代码,点击后它是正确的,如果我点击它会显示 js 文件
  • 我建议您将 ajax 请求中的 url 从 /projects/create 更改为 &lt;?= site_url('projects/create'); ?&gt;
  • 我也关注stackoverflow.com/questions/5051059/…,但同样的错误显示$未定义
  • 好的,我修复它我们应该避免使用 = 而我们应该使用 所以我将 =base_url()?> 替换为

标签: codeigniter


【解决方案1】:

是否有可能在您的代码中某处将 jQuery 设置为“safe mode”?

尝试将您的逻辑包装在匿名函数中,如下所示:

​(function($) {
    // insert logic here
})(jQuery)​

保证此函数中的任何内容都可以使用$ 作为jQuery 的快捷方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2012-06-16
    • 1970-01-01
    • 2012-03-29
    相关资源
    最近更新 更多