【问题标题】:Calling javascript function from controller codeigniter从控制器codeigniter调用javascript函数
【发布时间】:2011-05-03 03:42:50
【问题描述】:

我正在使用 codeigniter 开发网站。我有一个包含添加按钮和文本框的表单。一旦用户输入数据,我必须检查它是否存在于数据库中,如果是,则在页面中生成一个动态文本框,否则会提醒用户。我已经编写了 javascript 来生成动态文本框。我的问题是如何检查数据库???如何从javascript调用控制器或从控制器调用javascript函数???

【问题讨论】:

    标签: php javascript codeigniter view controller


    【解决方案1】:

    这实际上比您预期的要容易得多.. 一旦您看到它有多棒,您就会开始在您的整个开发过程中使用它!

    所以首先——我们将使用 jQuery 的原生 POST 函数。

    在你的控制器中创建一个你想要访问的函数,我的建议是在函数名前加上“ajax_”

    以下是控制器功能的示例:

    function ajax_lookUpUsername(){
        $username = $this->input->post('username');
        $this->db->where('username', $username);
        $query = $this->db->get('accounts');
        if ($query->num_rows() > 0){
           echo 0;
        } else {
           echo 1;
        }
    }
    

    这是您的简单 onclick javascript 函数:

    function lookUpUsername(name){
        $.post( 
            'http://yourwebsite/controller/ajax_lookUpUsername',
             { username: name },
             function(response) {  
                if (response == 1) {
                   alert('username available');
                } else {
                   alert('username taken');
                }
             }  
        );
    }
    

    第二个参数{ username: name } 是你的帖子值的去向,这里的术语“用户名”是键,名称是传入的值。所以这是一个帖子键值对,通常会发送一个发布消息。

    传递给回调函数的变量response 是控制器返回的回声。沟通变得非常容易。

    简单到令人惊叹,虽然我只让您处理 php 返回 0 或 1,但您可以返回非常高级的 json 对象,您可以使用这些对象为整个前端程序提供动力。

    对于更高级的响应,您可以通过以下方式从控制器数组中回显:

    echo json_encode($array_of_data); 
    

    这将为您返回一个完美的 json 数据集,您可以将其与任何面向对象的方法一起使用。我整个都用这个,你很快就会确定:)

    祝你好运!如有任何关于将响应扩展到简单的 0 或 1 回声的问题,请随时联系

    【讨论】:

    • 非常感谢......我正在为表单中的输入框开发自动完成......模型将传递数据数组......如何在视图中显示?
    • 首先你想从你的控制器响应一个 json_encode($array_stuff) ,所以将该函数包裹在你正在回显的数组周围。现在您可以像读取任何 json 对象一样读取 javascript 中的数据集。响应['key'] = 值。根据返回数组的结构,您可能必须遍历它或仅引用键。如果您满意,请标记为已回答:)
    • 没问题 - 如果在将响应转换为 json 时遇到问题 - 尝试将 eval(response) 包装在回调函数中 - 有时需要这样做。除此之外,谷歌搜索“解析 json” 以查找您在收集结果时可能遇到的任何问题——但它几乎将其视为一个数组——> response['key'] = value
    【解决方案2】:

    您可以通过对服务器中的 php 页面进行 ajax 调用来检查数据库中是否存在数据。如果你使用 jquery,你可以用更简单的方式来做,在这里你可以找到很好的例子:http://net.tutsplus.com/tutorials/javascript-ajax/5-ways-to-make-ajax-calls-with-jquery/

    如果你不这样做,你也可以用更多的代码行来做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多