如何使用我的 ajax 脚本获取名字和姓氏
How to get First and last name to work with my ajax script
我有一个 ajax 脚本,它从文本框 Employee_Name 获取 post 并自动填充 Employee_Number。它在用户键入名字时有效,但我希望它在用户键入名字和姓氏时仍然有效。是否有可能做到这一点?
这是insert.php
<?php
header('Content-Type: application/json');
try {
$dbName = "C:\inetpub\wwwroot\fpdb\staffing.mdb";
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)};charset=UTF-8; DBQ=$dbName; Uid=; Pwd=;");
}
catch (PDOException $e) {
echo $e->getMessage();
}
$Employee_Name= trim($_POST["Employee_Name"]);
$Employee_Lastname= trim($_POST["Employee_Name"]);
$params = array( ':FIRSTNAME' => $Employee_Name, ':LASTNAME'=>$Employee_Lastname );
$query = $db->prepare("
SELECT * FROM tbl_USERS
WHERE FIRSTNAME=:FIRSTNAME and LASTNAME=:LASTNAME");
$query->execute($params);
$result = $query->fetch(PDO::FETCH_ASSOC);
$EMPLOYEE_NUMBER=trim('EMPLOYEE_NUMBER');
$rc= $result[$EMPLOYEE_NUMBER];
echo json_encode ($rc);
?>
具有 php 形式的脚本。
<head>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/view.css">
<script src="<?php echo base_url();?>js/view.js"></script>
<script src="<?php echo base_url();?>js/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function(){
$("#Employee_Name").change(function(){
var Employee_Name=$(this).val();
if(Employee_Name != ''){
$.ajax({
type:"post",
url:"insert.php",
data:"Employee_Name="+Employee_Name,
datatype:"json",
success:function(data){ $("#Employee_Number").val(data);
$('#Employee_Number').css( "background-color","#B3CBD6" )
$('#Employee_Number').animate({backgroundColor: "#ffffff"});
},
error: function(response){
alert("error scripting") }
});
}
else{
$("#Employee_Number").val("");
}
});
});
</script>
<link href="<?php echo base_url();?>assets/css/bootstrap.min.css" rel="stylesheet">
</head>
<?php $msg = $this->session->flashdata('msg'); if((isset($msg)) && (!empty($msg))) { ?>
<div class="alert alert-success" >
<a href="#" class="close" data-dismiss="alert">×</a>
<?php print_r($msg); ?>
</div>
<?php } ?>
<?php $msg = $this->session->flashdata('msg1'); if((isset($msg)) && (!empty($msg))) { ?>
<div class="alert alert-error" >
<a href="#" class="close" data-dismiss="alert">×</a>
<?php print_r($msg); ?>
</div>
<?php } ?>
<body id="main_body" >
<div id="form_container">
<form class="" action="<?php echo base_url();?>employee/insert_employee" method="post">
<div class="form_description">
<h2>Enter Data</h2>
</div>
<ul >
<li id="li_1" >
<label class="description" for="element_1">Date Scheduled</label>
<div>
<input id="element_1" name="Date_Scheduled" class="element text medium" type="text" maxlength="255" value="" required/>
</div>
</li> <li id="li_2" >
<label class="description" for="element_2">Employee_Name </label>
<div>
<input id="Employee_Name" name="Employee_Name" class="element text medium" type="text" maxlength="255" value="" required/>
</div>
</li> <li id="li_3" >
<label class="description" for="element_3">Employee Number </label>
<div>
<input id="Employee_Number" name="Employee_Number" class="element text medium" type="text" maxlength="255" value="" required/>
</div>
</li>
<li id="li_3" >
<label class="description" for="element_3">Time Reported </label>
<div>
<input id="element_3" name="Time_Reported" class="element text medium" type="text" maxlength="255" value="" required/>
</div>
</li>
<li id="li_6" >
<label class="description" for="element_6">Reason </label>
<div>
<select class="element select medium" id="element_6" name="reason" required>
<option value="" selected="selected">Please Select..</option>
<option value="ILL PTO" >ILL PTO</option>
<option value="PTO" >PTO</option>
<option value="OTHER" >Other</option>
</select>
</div>
</li>
<li id="li_4" >
<label class="description" for="element_4">Scheduled Area</label>
<div>
<select class="element select medium" id="element_4" name="Scheduled_Area" required>
<option value="" selected="selected">Please Select..</option>
<option value="Outbound" >Outbound</option>
<option value="Inbound" >Inbound</option>
<option value="Claims" >Claims</option>
</select>
</div>
</li>
<li id="li_6" >
<label class="description" for="element_6">Contact </label>
<div>
<select class="element select medium" id="element_6" name="contact" required>
<option value="" selected="selected">Please Select..</option>
<option value="ILL PTO" >ILL PTO</option>
<option value="PTO" >PTO</option>
<option value="OTHER" >Other</option>
</select>
</div>
</li>
<li id="li_6" >
<label class="description" for="element_6">Approval </label>
<div>
<select class="element select medium" id="element_6" name="Approval" required>
<option value="" selected="selected">Please Select..</option>
<option value="ILL PTO" >ILL PTO</option>
<option value="PTO" >PTO</option>
<option value="OTHER" >Other</option>
</select>
</div>
</li>
<input id="Complete" class="default" type="hidden" name="Complete" value="NO" />
<input id="Status" class="default" type="hidden" name="Status" value="1" />
<li class="buttons">
<input id="saveForm" class="button_text" type="submit" name="submit" value="Submit" />
</li>
</ul>
</form>
</body>
</html>
从访问数据库中拉取的下拉框
<?php
try {
$dbName = "C:\inetpub\wwwroot\fpdb\staffing.mdb";
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)};charset=UTF-8; DBQ=$dbName; Uid=; Pwd=;");
}
catch (PDOException $e) {
echo $e->getMessage();
}
$sql="SELECT FIRSTNAME, LASTNAME, EMPLOYEE_NUMBER FROM tbl_USERS WHERE STATUS='A' order by FIRSTNAME";
/* You can add order by clause to the sql statement if the names are to be displayed in alphabetical order */
echo "<select id='Employee_Name' name=Employee_Name value=''>Employee_Name</option>"; // list box select command
foreach ($db->query($sql) as $row){//Array or records stored in $row
echo "<option value=$row[FIRSTNAME] $row[LASTNAME]>$row[FIRSTNAME] $row[LASTNAME]</option>";
/* Option values are added by looping through the array */
}
echo "</select>";// Closing of list box
?>
$("#Employee_Name").change
将在第一次更改事件时触发,这意味着当输入元素失去焦点时。最好的解决方案是使用一个单独的姓氏字段,并且仅当两个字段都有内容时才触发您的 ajax post 请求。
如果名字和姓氏将在同一个输入中键入,您可以拆分字符串,然后使用知道名字和姓氏的逻辑分开:
使用Javascript:
$(document).ready(function(){
$("#Employee_Name").change(function(){
var txt = $(this).val();
var nameArray = txt.split(",");
var Employee_Name = nameArray[0];
var Employee_LastName = nameArray[1];
if(Employee_Name != "" && Employee_LastName != ""){
$.ajax({
type:"post",
url:"insert.php",
data:"Employee_Name="+Employee_Name+"&Employee_Lastname="+Employee_LastName,
datatype:"json",
contentType: "application/x-www-form-urlencoded; charset=ISO-8859-1",
success:function(data){
$("#Employee_Number").val(data);
$('#Employee_Number').css( "background-color","#B3CBD6" )
$('#Employee_Number').animate({backgroundColor: "#ffffff"});
},
error: function(response){
alert("error scripting");
}
});
}
else{
$("#Employee_Number").val("");
}
});
});
在PHP中:
$Employee_Name = trim($_POST["Employee_Name"]);
$Employee_Lastname = trim($_POST["Employee_Lastname"]);
echo json_encode(explode('.',$rc)[0]);
我有一个 ajax 脚本,它从文本框 Employee_Name 获取 post 并自动填充 Employee_Number。它在用户键入名字时有效,但我希望它在用户键入名字和姓氏时仍然有效。是否有可能做到这一点?
这是insert.php
<?php
header('Content-Type: application/json');
try {
$dbName = "C:\inetpub\wwwroot\fpdb\staffing.mdb";
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)};charset=UTF-8; DBQ=$dbName; Uid=; Pwd=;");
}
catch (PDOException $e) {
echo $e->getMessage();
}
$Employee_Name= trim($_POST["Employee_Name"]);
$Employee_Lastname= trim($_POST["Employee_Name"]);
$params = array( ':FIRSTNAME' => $Employee_Name, ':LASTNAME'=>$Employee_Lastname );
$query = $db->prepare("
SELECT * FROM tbl_USERS
WHERE FIRSTNAME=:FIRSTNAME and LASTNAME=:LASTNAME");
$query->execute($params);
$result = $query->fetch(PDO::FETCH_ASSOC);
$EMPLOYEE_NUMBER=trim('EMPLOYEE_NUMBER');
$rc= $result[$EMPLOYEE_NUMBER];
echo json_encode ($rc);
?>
具有 php 形式的脚本。
<head>
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="<?php echo base_url();?>css/view.css">
<script src="<?php echo base_url();?>js/view.js"></script>
<script src="<?php echo base_url();?>js/jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function(){
$("#Employee_Name").change(function(){
var Employee_Name=$(this).val();
if(Employee_Name != ''){
$.ajax({
type:"post",
url:"insert.php",
data:"Employee_Name="+Employee_Name,
datatype:"json",
success:function(data){ $("#Employee_Number").val(data);
$('#Employee_Number').css( "background-color","#B3CBD6" )
$('#Employee_Number').animate({backgroundColor: "#ffffff"});
},
error: function(response){
alert("error scripting") }
});
}
else{
$("#Employee_Number").val("");
}
});
});
</script>
<link href="<?php echo base_url();?>assets/css/bootstrap.min.css" rel="stylesheet">
</head>
<?php $msg = $this->session->flashdata('msg'); if((isset($msg)) && (!empty($msg))) { ?>
<div class="alert alert-success" >
<a href="#" class="close" data-dismiss="alert">×</a>
<?php print_r($msg); ?>
</div>
<?php } ?>
<?php $msg = $this->session->flashdata('msg1'); if((isset($msg)) && (!empty($msg))) { ?>
<div class="alert alert-error" >
<a href="#" class="close" data-dismiss="alert">×</a>
<?php print_r($msg); ?>
</div>
<?php } ?>
<body id="main_body" >
<div id="form_container">
<form class="" action="<?php echo base_url();?>employee/insert_employee" method="post">
<div class="form_description">
<h2>Enter Data</h2>
</div>
<ul >
<li id="li_1" >
<label class="description" for="element_1">Date Scheduled</label>
<div>
<input id="element_1" name="Date_Scheduled" class="element text medium" type="text" maxlength="255" value="" required/>
</div>
</li> <li id="li_2" >
<label class="description" for="element_2">Employee_Name </label>
<div>
<input id="Employee_Name" name="Employee_Name" class="element text medium" type="text" maxlength="255" value="" required/>
</div>
</li> <li id="li_3" >
<label class="description" for="element_3">Employee Number </label>
<div>
<input id="Employee_Number" name="Employee_Number" class="element text medium" type="text" maxlength="255" value="" required/>
</div>
</li>
<li id="li_3" >
<label class="description" for="element_3">Time Reported </label>
<div>
<input id="element_3" name="Time_Reported" class="element text medium" type="text" maxlength="255" value="" required/>
</div>
</li>
<li id="li_6" >
<label class="description" for="element_6">Reason </label>
<div>
<select class="element select medium" id="element_6" name="reason" required>
<option value="" selected="selected">Please Select..</option>
<option value="ILL PTO" >ILL PTO</option>
<option value="PTO" >PTO</option>
<option value="OTHER" >Other</option>
</select>
</div>
</li>
<li id="li_4" >
<label class="description" for="element_4">Scheduled Area</label>
<div>
<select class="element select medium" id="element_4" name="Scheduled_Area" required>
<option value="" selected="selected">Please Select..</option>
<option value="Outbound" >Outbound</option>
<option value="Inbound" >Inbound</option>
<option value="Claims" >Claims</option>
</select>
</div>
</li>
<li id="li_6" >
<label class="description" for="element_6">Contact </label>
<div>
<select class="element select medium" id="element_6" name="contact" required>
<option value="" selected="selected">Please Select..</option>
<option value="ILL PTO" >ILL PTO</option>
<option value="PTO" >PTO</option>
<option value="OTHER" >Other</option>
</select>
</div>
</li>
<li id="li_6" >
<label class="description" for="element_6">Approval </label>
<div>
<select class="element select medium" id="element_6" name="Approval" required>
<option value="" selected="selected">Please Select..</option>
<option value="ILL PTO" >ILL PTO</option>
<option value="PTO" >PTO</option>
<option value="OTHER" >Other</option>
</select>
</div>
</li>
<input id="Complete" class="default" type="hidden" name="Complete" value="NO" />
<input id="Status" class="default" type="hidden" name="Status" value="1" />
<li class="buttons">
<input id="saveForm" class="button_text" type="submit" name="submit" value="Submit" />
</li>
</ul>
</form>
</body>
</html>
从访问数据库中拉取的下拉框
<?php
try {
$dbName = "C:\inetpub\wwwroot\fpdb\staffing.mdb";
$db = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)};charset=UTF-8; DBQ=$dbName; Uid=; Pwd=;");
}
catch (PDOException $e) {
echo $e->getMessage();
}
$sql="SELECT FIRSTNAME, LASTNAME, EMPLOYEE_NUMBER FROM tbl_USERS WHERE STATUS='A' order by FIRSTNAME";
/* You can add order by clause to the sql statement if the names are to be displayed in alphabetical order */
echo "<select id='Employee_Name' name=Employee_Name value=''>Employee_Name</option>"; // list box select command
foreach ($db->query($sql) as $row){//Array or records stored in $row
echo "<option value=$row[FIRSTNAME] $row[LASTNAME]>$row[FIRSTNAME] $row[LASTNAME]</option>";
/* Option values are added by looping through the array */
}
echo "</select>";// Closing of list box
?>
$("#Employee_Name").change
将在第一次更改事件时触发,这意味着当输入元素失去焦点时。最好的解决方案是使用一个单独的姓氏字段,并且仅当两个字段都有内容时才触发您的 ajax post 请求。
如果名字和姓氏将在同一个输入中键入,您可以拆分字符串,然后使用知道名字和姓氏的逻辑分开:
使用Javascript:
$(document).ready(function(){
$("#Employee_Name").change(function(){
var txt = $(this).val();
var nameArray = txt.split(",");
var Employee_Name = nameArray[0];
var Employee_LastName = nameArray[1];
if(Employee_Name != "" && Employee_LastName != ""){
$.ajax({
type:"post",
url:"insert.php",
data:"Employee_Name="+Employee_Name+"&Employee_Lastname="+Employee_LastName,
datatype:"json",
contentType: "application/x-www-form-urlencoded; charset=ISO-8859-1",
success:function(data){
$("#Employee_Number").val(data);
$('#Employee_Number').css( "background-color","#B3CBD6" )
$('#Employee_Number').animate({backgroundColor: "#ffffff"});
},
error: function(response){
alert("error scripting");
}
});
}
else{
$("#Employee_Number").val("");
}
});
});
在PHP中:
$Employee_Name = trim($_POST["Employee_Name"]);
$Employee_Lastname = trim($_POST["Employee_Lastname"]);
echo json_encode(explode('.',$rc)[0]);