php:如何使用jQueryAjax验证文本框
我有一个文本框,一旦用户从该文本框中聚焦出来,我想使用jqueryajax对其进行验证 验证包括: 服务器端,值会转到php页面,我必须验证它 如果验证成功,则显示AlertSuccess;否则,如果错误警报失败 我怀疑jQueryAjax将如何显示失败;到目前为止,我所做的只是为了成功 我只知道下面提到的代码,而且我应该做什么来解决我的问题?请帮忙php:如何使用jQueryAjax验证文本框,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我有一个文本框,一旦用户从该文本框中聚焦出来,我想使用jqueryajax对其进行验证 验证包括: 服务器端,值会转到php页面,我必须验证它 如果验证成功,则显示AlertSuccess;否则,如果错误警报失败 我怀疑jQueryAjax将如何显示失败;到目前为止,我所做的只是为了成功 我只知道下面提到的代码,而且我应该做什么来解决我的问题?请帮忙 <script type="text/javascript"> $(function() { $('i
<script type="text/javascript">
$(function()
{
$('input[id^="datepicker"]').on('focusout',function()
{
$.ajax({
url: "ajax_frmdate_validation.php?txtval="+$(this).val(),
success: function(data){
alert('Successfully ...');
}
});
});
});
</script>
--------------
--------------
<input class="plain" name="frmdate" value="" size="25" id="datepicker" />
我的服务器端php代码是:
$txtval =$_REQUEST['txtval'];
$fromTimestamp = strtotime( $txtval);
//---------My Logic Code Goes Here -----------------------------
$sid=$_SESSION['id'];
$result12=mysql_query("SELECT * FROM budget where creater_id = '$sid'");
$num_rows = mysql_num_rows($result12);
if($num_rows>0)//check if empty or not
{
while($test12 = mysql_fetch_array($result12)) {
$from_date = strtotime($test12['from_date']);//getting all the FROM-Dates_column
$to_date = strtotime($test12['to_date']);//getting all the TO-Dates_column
if(isset($to_date) && isset($from_date)) {
if((($fromTimestamp >= $from_date) && ($fromTimestamp <= $to_date)) || (($toTimestamp >= $from_date) && ($toTimestamp <= $to_date))) {
$val = 'Y'; //return Y in meet this condition
}
else {
$val = 'N'; // return N if meet this condition
}
}
//---------------------Result of my logic code---------------------------------
if($val == 'Y') //Returns TRUE
{
//VALIDATION FAILS - Returns Validation Error
break;
}
else if($val == 'N') {
//VALIDATION TRUE - Returns Validation Error
}
}
}
它使用方便
if($val == 'Y') //Returns TRUE
{
echo 'success';
}
else if($val == 'N') {
echo 'fail';
}exit;
您将在成功回调的数据参数中获得此成功/失败。您的php代码将
if($val == 'Y') //Returns TRUE
{
echo "Success";
//VALIDATION FAILS - Returns Validation Error
break;
}
else if($val == 'N') {
echo "Fail";
//VALIDATION TRUE - Returns Validation Error
}
还有JS
$.ajax({
url: "ajax_frmdate_validation.php?txtval="+$(this).val(),
success: function(data){
if(data == "Success")
alert("success");
if(data == "Fail")
alert("Fail");
}
});
除非将HTTP响应设置为错误代码,否则ajax不会回调fail:function 一种简单的方法是,即使验证失败或成功,也从服务器端发送一个JSON字符串,如下表所示 如果验证成功
{'status':'OK','message':'Validation success'}
如果验证失败
{'status':'NOK','message':'Please enter your name'}
现在,您可以在成功回调中获取此JSON字符串并采取适当的操作。更改
if($val == 'Y') //Returns TRUE
{
//VALIDATION FAILS - Returns Validation Error
break;
}
else if($val == 'N') {
//VALIDATION TRUE - Returns Validation Error
}
进入
然后在js中,只需抓取响应并发送警报消息:
success: function(data){
if (data == 'Y') {
alert('Successfully ...');
} else {
alert('Oh no...');
}
}
您可以使用ajax类型和数据选项来发送数据,而不是通过url传递数据
$.ajax({
url: "ajax_frmdate_validation.php",
type:'GET',
data:{"txtval":$(this).val()},
success: function(data){
if(data=="success"){
alert('successful');
}else{
alert('error');
}
}
});
您的服务器端代码包括以下内容
if($val == 'Y') //Returns TRUE
{
echo "success"
break;
}
else if($val == 'N') {
echo "error";
break;
}
您可以这样做:
$txtval = mysql_real_escape_string($_REQUEST['txtval']);
$fromTimestamp = strtotime( $txtval);
//---------My Logic Code Goes Here -----------------------------
$sid=$_SESSION['id'];
$result12=mysql_query("SELECT * FROM budget where creater_id = '$sid'");
$num_rows = mysql_num_rows($result12);
if($num_rows>0)//check if empty or not
{
while($test12 = mysql_fetch_array($result12)) {
$from_date = strtotime($test12['from_date']);//getting all the FROM-Dates_column
$to_date = strtotime($test12['to_date']);//getting all the TO-Dates_column
if(isset($to_date) && isset($from_date)) {
if((($fromTimestamp >= $from_date) && ($fromTimestamp <= $to_date)) || (($toTimestamp >= $from_date) && ($toTimestamp <= $to_date))) {
$val = 'Y'; //return Y in meet this condition
}
else {
$val = 'N'; // return N if meet this condition
}
}
//---------------------Result of my logic code---------------------------------
if($val == 'Y') //Returns TRUE
{
echo "failed";
exit();
}
else if($val == 'N')
{
echo "success";
exit();
}
新更新
试试这个:
<script type="text/javascript">
$(document).ready(function() {
$("#datepicker").datepicker({
dateFormat: "yy-mm-dd" ,
onSelect:function(date,instance){
$.ajax({
url: "ajax_frmdate_validation.php?txtval="+date,
success: function(data){
if (data == 'success') {
alert("Successfully validated");
} else {
alert("Failed");
return false;
}
}
});
}
});
});
</script>
只需从服务器返回错误消息,并在成功时向其发出警报function@Sabari请把它作为一个答案发布,很少有代码作为参考。但是从预算中转义这个查询$result12=mysql\u querySELECT*,其中creater\u id='$sid';至少有mysql\u real\u escape_string@user2180861完成。请check@user2180861希望这对你有所帮助,我在上面向你展示了事件焦点。而且,我的文本框正在从calender获取输入。当用户关注文本框时,jQuery calender将打开。那么根据我的要求,jquery的哪个事件适合于此?@user2180861我不清楚你的意思。您在文本框中使用的事件焦点OUT符合您的要求。当我单击它时,我有一个文本框。一台j-query日历正在打开。所以在这个例子中,我使用了focusout事件。但focusout似乎并不好。你能建议我在这个案例中使用哪个事件吗???@user2180861请检查我的更新。希望这是你需要的
<script type="text/javascript">
$(function()
{
$('input[id^="datepicker"]').on('focusout',function()
{
$.ajax({
url: "ajax_frmdate_validation.php?txtval="+$(this).val(),
success: function(data){
if (data == 'success') {
alert("Successfully validated");
} else {
alert("Failed");
return false;
}
}
});
});
});
</script>
$(function(){
$('#datepicker').datepicker({
onSelect:function(date,instance){
$.ajax({
url: "ajax_frmdate_validation.php?txtval="+date,
success: function(data){
if (data == 'success') {
alert("Successfully validated");
} else {
alert("Failed");
return false;
}
}
});
}
});
});
<script type="text/javascript">
$(document).ready(function() {
$("#datepicker").datepicker({
dateFormat: "yy-mm-dd" ,
onSelect:function(date,instance){
$.ajax({
url: "ajax_frmdate_validation.php?txtval="+date,
success: function(data){
if (data == 'success') {
alert("Successfully validated");
} else {
alert("Failed");
return false;
}
}
});
}
});
});
</script>