Я создал форму, которая содержит только один входной тег, имя которого first_name.
Теперь я хочу показать, что first_name существует в базе данных или нет.
Я создал базу данных с именем db_practice, таблица которой называется tbl_user и там много полей. first_name является одним из имен полей.
Вот мой весь код. Пожалуйста, помогите мне выяснить мою проблему.
Это вид кода:
<html>
<head>
<meta charset="UTF-8">
<title>Check username availability using jQuery, AJAX</title>
<script type="text/javascript">
$(document).ready(function() {
$("#username").live("blur", function(e) {
$('#msg').hide();
if ($('#username').val() == null || $('#username').val() == "") {
$('#msg').show();
$("#msg").html("Username is required field.").css("color", "red");
} else {
$.ajax({
type: "POST",
url: "<?php echo base_url();?>"+"/welcome/get_user",
data: $('#signupform').serialize(),
dataType: "html",
cache: false,
success: function(msg) {
$('#msg').show();
$("#msg").html(msg);
},
error: function(jqXHR, textStatus, errorThrown) {
$('#msg').show();
$("#msg").html(textStatus + " " + errorThrown);
}
});
}
});
});
</script>
</head>
<body>
<div style="margin: 10px 0 0 10px;width: 600px">
<h3>Codeigniter username availability check</h3>
<form id="signupform" style="padding: 10px;">
<fieldset>
<legend>Check username</legend>
<div>
<label>Username</label><br/>
<input type="text" name="first_name" id="username"/>
<div id="msg"></div>
</div>
</fieldset>
</form>
</div>
<script src="<?php echo assets_url(); ?>js/jquery-1.9.1.min.js"></script>
<script src="<?php echo assets_url(); ?>js/jquery-migrate-1.2.1.js"></script>
<script src="<?php echo assets_url(); ?>js/jquery-ui-1.10.3-custom.min.js">
</script>
</body>
</html>
<!-- below jquery things triggered on onblur event and checks the username availability in the database -->
Это код контроллера:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('my_model');
}
public function index()
{
$this->load->view('welcome_message');
}
public function get_user()
{
if (isset($_POST['first_name']))
{
$username = $_POST['first_name'];
$results = $this->my_model->get_user($username);
if ($results === TRUE)
{
echo '<span style="color:red;">Username unavailable</span>';
}
else
{
echo '<span style="color:green;">Username available</span>';
}
}
else {
echo '<span style="color:red;">Username is required field.</span>';
}
}
}
/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */
Это код модели:
<?php
/* * To change this template, choose Tools | Templates * and open the template in the editor. */
/** * Description of my_model * * @author Masud */ class My_Model extends CI_Model {
//put your code here
public function get_user($username)
{
$this->db->select('*');
$this->db->from('tbl_user');
$this->db->where('first_name',$username);
$query = $this->db->get();
$result = $query->row();
if ($result)
{
return TRUE;
}
else
{
return FALSE;
}
} }
?>
Fix:
url: "<?php echo base_url(); ?>"+"/welcome/get_user",
$results = $this->my_model->get_user($username); // not My_model, it's my_model
class My_model extends CI_Model { // My_model not My_Model
$result = $query->row(); // $query, not $query_result
Сделайте эти изменения и посмотрите.
В коде Ajax, url: "<?php echo base_url();?>welcome/get_user",
После сегмента кода AJAX поставить
return false;
После их добавления ваш javascript будет таким.
<script type="text/javascript">
$(document).ready(function() {
$("#username").live("blur", function(e) {
$('#msg').hide();
if ($('#username').val() == null || $('#username').val() == "") {
$('#msg').show();
$("#msg").html("Username is required field.").css("color", "red");
} else {
$.ajax({
type: "POST",
url: "<?php echo base_url();?>welcome/get_user",
data: $('#signupform').serialize(),
dataType: "html",
cache: false,
success: function(msg) {
$('#msg').show();
$("#msg").html(msg);
},
error: function(jqXHR, textStatus, errorThrown) {
$('#msg').show();
$("#msg").html(textStatus + " " + errorThrown);
}
});
return false;
}
});
});
</script>
Надеюсь, это работает.
У меня возникла проблема, когда входной тег содержит имя пользователя от пользователя. Если это имя пользователя уже существует в базе данных, тогда он покажет имя пользователя недоступно, а имя пользователя не существует в базе данных, тогда он покажет имя пользователя доступно. Я делюсь своим решением …. ………..
Этот код для просмотра
<html>
<head>
<meta charset="UTF-8">
<title>Check username availability using jQuery, AJAX</title>
<script type="text/javascript">
<!--
//Create a boolean variable to check for a valid Internet Explorer instance.
var xmlhttp = false;
//Check if we are using IE.
try {
//If the Javascript version is greater than 5.
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
//alert ("You are using Microsoft Internet Explorer.");
} catch (e) {
//If not, then use the older active x object.
try {
//If we are using Internet Explorer.
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
//alert ("You are using Microsoft Internet Explorer");
} catch (E) {
//Else we must be using a non-IE browser.
xmlhttp = false;
}
}
//If we are using a non-IE browser, create a javascript instance of the object.
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
//alert ("You are not using Microsoft Internet Explorer");
}
function makerequest( user_name,objID)
{
if (user_name.length == 0) {
document.getElementById("txtHint").innerHTML = "Username available";
return;
} else{
//var user_name = document.getElementById('username').value;
serverPage='welcome/valid_user_name/'+user_name;
//alert(serverPage);
xmlhttp.open("GET", serverPage);
xmlhttp.onreadystatechange = function()
{
//alert(xmlhttp.readyState);
//alert(xmlhttp.status);
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById(objID).innerHTML = xmlhttp.responseText;
//document.getElementById(objcw).innerHTML = xmlhttp.responseText;
}
}
}
xmlhttp.send(null);
}
//-->
</script>
</head>
<body>
<div style="margin: 10px 0 0 10px;width: 600px">
<h3>Codeigniter username availability check</h3>
<form id="signupform" style="padding: 10px;">
<fieldset>
<legend>Check username</legend>
<div>
<label>Username</label><br/>
<input type="text" name="first_name"id="username" onkeyup="makerequest(this.value,'msg')"/>
<span id="msg"></span>
</div>
<div>
<label>Email Address</label><br/>
<input type="email" name="email_address" id="email_address"/>
</div>
</fieldset>
</form>
</div>
</script>
</body>
</html>
Этот код для контроллера
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('my_model');
}
public function index()
{
$this->load->view('welcome_message');
}
public function valid_user_name($user_name)
{
$result = $this->my_model->get_user($user_name);
if ($result === TRUE)
{
echo '<span style="color:red;">Username unavailable</span>';
}
else
{
echo '<span style="color:green;">Username available</span>';
}
}
}
Этот код для модели
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
* Description of my_model
*
* @author Masud
*/
class My_Model extends CI_Model {
//put your code here
public function get_user($user_name)
{
$this->db->select('*');
$this->db->from('tbl_user');
$this->db->where('first_name',$user_name);
$query = $this->db->get();
$result = $query->row();
if ($result)
{
return TRUE;
}
else
{
return FALSE;
}
}
}
?>
Эти коды доказаны. Любое тело может использовать это ..