Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用记录保存消息进行表单验证_Php_Javascript_Ajax_Jquery - Fatal编程技术网

Php 使用记录保存消息进行表单验证

Php 使用记录保存消息进行表单验证,php,javascript,ajax,jquery,Php,Javascript,Ajax,Jquery,不知是否有人能帮助我 首先,很抱歉,我对JavaScript和jQuery比较陌生,所以这可能是一个非常愚蠢的问题 使用这些教程,我将页面放在一起,允许用户向MySQL数据库添加记录,但我在表单“验证”和jQuery“提交”消息方面遇到了一些困难 如果使用“选择上述链接”,则在加载页面后,选择“保存”,您将看到正确的字段验证已激活,但尽管存在验证错误,页面底部仍会显示“位置已保存”消息,页面会刷新将记录保存到数据库的过程 显然,这是不应该发生的,但我在加入“验证”和“提交”消息时遇到了很大的困难

不知是否有人能帮助我

首先,很抱歉,我对JavaScript和jQuery比较陌生,所以这可能是一个非常愚蠢的问题

使用这些教程,我将页面放在一起,允许用户向MySQL数据库添加记录,但我在表单“验证”和jQuery“提交”消息方面遇到了一些困难

如果使用“选择上述链接”,则在加载页面后,选择“保存”,您将看到正确的字段验证已激活,但尽管存在验证错误,页面底部仍会显示“位置已保存”消息,页面会刷新将记录保存到数据库的过程

显然,这是不应该发生的,但我在加入“验证”和“提交”消息时遇到了很大的困难。他们独立工作很好,但正如你所看到的,一旦在一起,他们就不行了

下面的代码处理“保存记录”和页面刷新

更新-下面的工作解决方案

<script>
        jQuery(document).ready(function(){
            jQuery("#addlocation").validationEngine();
            $("#addlocation").bind("jqv.field.result", function(event, field, errorFound, prompText){ console.log(errorFound) })
        });
    </script>
<script type="text/javascript">
$(document).ready(function(){
    $('#addlocation').submit(function(){

        //check the form is not currently submitting
        if($(this).data('formstatus') !== 'submitting'){

            //setup variables
            var form = $(this),
                formData = form.serialize(),
                formUrl = form.attr('action'),
                formMethod = form.attr('method'), 
                responseMsg = $('#saverecordresponse');

            //add status data to form
            form.data('formstatus','submitting');

            //show response message - waiting
            responseMsg.hide()
                       .addClass('response-waiting')
                       .text('Please Wait...')
                       .fadeIn(200);

            //send data to server for validation
            $.ajax({
                url: formUrl,
                type: formMethod,
                data: formData,
                success:function(data){

                    //setup variables
                    var responseData = jQuery.parseJSON(data), 
                        klass = '';

                    //response conditional
                    switch(responseData.status){
                        case 'error':
                            klass = 'response-error';
                        break;
                        case 'success':
                            klass = 'response-success';
                        break;  
                    }

                    //show reponse message
                    responseMsg.fadeOut(200,function(){
                        $(this).removeClass('response-waiting')
                               .addClass(klass)
                               .text(responseData.message)
                               .fadeIn(200,function(){
                                   //set timeout to hide response message
                                   setTimeout(function(){
                                       responseMsg.fadeOut(200,function(){
                                           $(this).removeClass(klass);
                                           form.data('formstatus','idle');
                                       });
                                   },3000)
                                });
                    });
                }
            });
        }

        //prevent form from submitting
        return false;
    });
});
</script>

jQuery(文档).ready(函数(){
jQuery(“#addlocation”).validationEngine();
$(“#addlocation”).bind(“jqv.field.result”,函数(事件、字段、errorFound、prompText){console.log(errorFound)})
});
$(文档).ready(函数(){
$('#addlocation')。提交(函数(){
//检查表单当前是否未提交
如果($(this).data('formstatus')!='submitting'){
//设置变量
变量形式=$(此),
formData=form.serialize(),
formUrl=form.attr('action'),
formMethod=form.attr('method'),
responseMsg=$(“#saverecordresponse”);
//将状态数据添加到表单
表格数据('formstatus','submitting');
//显示响应消息-正在等待
responseMsg.hide()
.addClass('response-waiting')
.text('请稍候…')
.fadeIn(200);
//将数据发送到服务器进行验证
$.ajax({
url:formUrl,
类型:formMethod,
数据:formData,
成功:功能(数据){
//设置变量
var responseData=jQuery.parseJSON(数据),
klass='';
//响应条件
开关(响应数据状态){
案例“错误”:
klass=‘响应错误’;
打破
成功案例:
klass=‘响应成功’;
打破
}
//显示响应消息
响应sg.fadeOut(200,函数(){
$(this.removeClass('response-waiting'))
.addClass(klass)
.text(responseData.message)
.fadeIn(200,函数(){
//设置超时以隐藏响应消息
setTimeout(函数(){
响应sg.fadeOut(200,函数(){
$(此).removeClass(klass);
form.data('formstatus','idle');
});
},3000)
});
});
}
});
}
//阻止表单提交
返回false;
});
});
这是“saverecord.php”脚本,在选择“Save”按钮时调用它

<?php


    //sanitize data
    $userid = mysql_real_escape_string($_POST['userid']);   
    $locationname = mysql_real_escape_string($_POST['locationname']);   
    $returnedaddress = mysql_real_escape_string($_POST['returnedaddress']); 

    //validate email address - check if input was empty
    if(empty($locationname)){
        $status = "error";
        $message = "You didn't enter a name for this location!";
    }
    else if(!preg_match('/^$|^[A-Za-z0-9 _.,]{5,35}$/', $locationname)){ //validate email address - check if is a valid email address
            $status = "error";
            $message = "You have entered an invalid Location Name!";
    }

    else{
            $query = mysql_query("INSERT INTO `table` (userid, locationname, returnedaddress) VALUES ('$userid', '$locationname', '$returnedaddress')");  
            if($query){ //if insert is successful
                $status = "success";
                $message = "Location Saved!";   
            }
            else { //if insert fails
                $status = "error";
                $message = "I'm sorry, there has been a technical error! Please try again. If problems persist please contact Map My Finds support.";   
            }

    }

    //return json response
    $data = array(
        'status' => $status,
        'message' => $message
    );

    echo json_encode($data);
    exit;
?>
我相信您需要:

if($.validationEngine.submitForm(this,settings) == true) {return false;}

在$.ajax行

IRHM之前的某个地方,检查表单是否在您的活动中提交之前进行了验证,即

$('#addlocation').submit(function(){
    if($(this).validate()){
       // put your all existing content here.
    }  
});
为了防止在ajax之后提交表单,请在if块中的上述脚本末尾放置return false,即

if($(this).validate()){
    // put your all existing content here.
    return false;
} 
我猜问题是由验证引擎引起的,因此在这种情况下,为了防止表单提交,请尝试使用以下方法:

$('#addlocation').submit(function(evt){
    if($(this).validate()){
       evt.preventDefault();
       // put your all existing content here.
    }  
});
如果上述代码不起作用,则将
onValidationComplete
事件包含在
validationEngine
中,并将If($(this).validate())的所有现有内容放入其中,即

jQuery(document).ready(function(){
   // binds form submission and fields to the validation engine
   jQuery("#addlocation").validationEngine({ onValidationComplete: function(){ 

        //setup variables

        //add status data to form

        //show response message - waiting

        //send data to server for validation

        return false; 
      }
    });
});

祝你好运

经过几天的研究,我现在有了一个可行的解决方案,使用我在原始文章中添加的示例。

==不正确,请尝试
=
Hi@Tornike非常感谢您回复我的帖子。我已经做了你建议的改变,但不幸的是这并不能解决问题。Kind regardsIt似乎在脚本中有另一个错误,它在console.log中得到了什么?或者,如果php中出现错误,那么到底发生了什么错误?您好@Tornike,谢谢您的回复。我已经运行了JavaScript控制台,不幸的是没有返回任何错误。友善的regards@Tornike
==
也是正确的[虽然这里不需要],它只是。你好@KundanSinghChouhan,非常感谢。字段已正确验证,“保存”功能仅在发生此情况时起作用。但是,浏览器没有在单击按钮时在页面底部显示jQuery“Location Saved”消息,而是打开一个新窗口,显示以下消息:{“status”:“success”,“message”:“Location Saved!”}很抱歉再次给您带来麻烦,但我只是想知道你是否可以看看这个,让我知道我哪里做错了。测试页面仍在设置中,说明了问题。非常感谢和亲切regards@IRHM“addlocation.php”页面再次重定向到“index.php”,我无法看到该页面。很抱歉,我不得不更改页面名称。如果您使用此地址,则可以访问www.mapmyfinds.co.uk/chris/test.php。再一次,妈妈