我正在使用codeigniter开发网站。我有一个包含添加按钮和文本框的表单。一旦用户输入数据,我必须检查它是否存在于数据库中,如果是,则在页面中生成动态文本框,否则提醒用户。我写了javascript来生成动态文本框。我的问题是如何检查数据库???如何从javascript调用控制器或从控制器调用javascript函数???
答案 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/
如果不这样做,无论如何都可以使用更多代码行。