从控制器codeigniter调用javascript函数

时间:2011-05-03 03:42:50

标签: php javascript codeigniter view controller

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

2 个答案:

答案 0 :(得分:6)

这实际上比你预期的要容易得多..一旦你看到它的发展,你就会开始使用它的全部发展!

首先,我们将使用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 }是你的帖子值的去处,这里的术语“用户名”是键,name是传入的值。所以这是一个通常会被发送的后键值对发布消息。

传递给回调函数的变量response是控制器返回的回显。沟通非常简单。

简单性是惊人的,虽然我只让你处理php返回0或1,你可以返回非常高级的json对象,你可以为整个前端程序提供动力。

对于更高级的响应,您可以通过这种方式从控制器阵列回显:

echo json_encode($array_of_data); 

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

祝你好运!如果您有任何关于通过简单的0或1回声扩展回复的问题,请随时与我们联系

答案 1 :(得分:0)

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

如果不这样做,无论如何都可以使用更多代码行。