2011-05-03 50 views
0

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

回答

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 }是你提交值会去,术语“用户N ame“这里是关键,名字是传入的值。所以这是一个post-key-value对,通常会与post信息一起发送。

传入回调函数的变量response是由控制器返回的回显。交流变得非常简单。

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

对于更高级的反应,你可以从你的控制器阵列的这样回应:

echo json_encode($array_of_data); 

,这将返回到你,你可以用任何面向对象的方法用一个完美的JSON数据集。我使用这个全部,你会很快太im确定:)

祝你好运男人!随时联系瓦特/任何问题关于扩大反应通过简单的0或1回波

+0

非常感谢你....我正在开发自动完成输入框的形式....该模型将传递数据...如何在视图中显示??? – user735399 2011-05-03 09:13:21

+0

首先,您想要从您的控制器响应json_encode($ array_stuff),因此将该函数包装在您正在回显的数组中。 现在,您可以像使用任何json对象一样从JavaScript中的数据集中读取数据。响应['key'] =值。取决于返回数组的结构,您可能需要遍历它或仅引用键。 马克作为回答如果你满意:) – Atticus 2011-05-03 09:53:28

+0

谢谢....我将它标记为回答:)) – user735399 2011-05-04 05:49:54

相关问题