Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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_Jquery_Ajax_Forms - Fatal编程技术网

Php 我的联系人表单正在工作,但它没有成功';不显示成功消息

Php 我的联系人表单正在工作,但它没有成功';不显示成功消息,php,jquery,ajax,forms,Php,Jquery,Ajax,Forms,我的联系人表单正在运行,但未显示成功消息。另一个开发人员编写了PHP代码,但我做了一些jQuery,它不会显示我的消息。我很确定问题出在jQuery上。我对这行代码特别困惑 $("#result").hide().html(output).slideDown(); }, 'json'); } 我想您可能会想使用.show(),因为需要使用#result来显示html,但这似乎不起作用。完整代码如下 $(function(){ $(".btn")

我的联系人表单正在运行,但未显示成功消息。另一个开发人员编写了PHP代码,但我做了一些jQuery,它不会显示我的消息。我很确定问题出在jQuery上。我对这行代码特别困惑

 $("#result").hide().html(output).slideDown();
            }, 'json');
        }
我想您可能会想使用.show(),因为需要使用#result来显示html,但这似乎不起作用。完整代码如下

$(function(){
    $(".btn").click(function() {
        //get input field values
        var user_name       = $('input[name=name]').val(),
            user_email      = $('input[name=email]').val(),
            user_message    = $('textarea[name=message]').val(),
            proceed = true;

        //simple validation at client's end
        //we simply change border color to red if empty field using .css()
        if(user_name===""){
            $('input[name=name]').css('border','2px solid red').after('<p class="error-msg">(What\'s your name?)</p>');
            proceed = false;
        }
        if(user_email===""){
            $('input[name=email]').css('border','2px solid red').after('<p class="error-msg">(Please provide a valid email)</p>');
            proceed = false;
        }

        if(user_message==="") {
            $('textarea[name=message]').css('border','2px solid red').after('<p class="error-msg">(Please let me know what your inquiry is about)</p>');
            proceed = false;
        }

        //everything looks good! proceed...
        if(proceed)
        {
            //data to be sent to server
            post_data = {'userName':user_name, 'userEmail':user_email, 'userMessage':user_message};

            //Ajax post data to server
            $.post('../../contact-form.php', post_data, function(response){

                //load json data from server and output message
                if(response.type === 'error')
                {
                    output = '<div class="error">'+response.text+'</div>';

                }else{

                    output = '<div class="success">'+response.text+'</div>';
                    alert('Thanks for the message');

                    //reset values in all input fields
                    $('.form-container input').val('');
                    $('.form-container textarea').val('');
                }

                $("#result").hide().html(output).slideDown();
            }, 'json');
        }
    });

    //reset previously set border colors and hide all message on .keyup()
    $(".form-container input, .form-container textarea").keyup(function() {
        $(".form-container input, .form-container textarea").css('border-color','');
        $("#result").slideUp();
    });

});
$(函数(){
$(“.btn”)。单击(函数(){
//获取输入字段值
var user_name=$('input[name=name]')。val(),
user_email=$('input[name=email]')。val(),
user_message=$('textarea[name=message]')。val(),
继续=真;
//客户端的简单验证
//如果字段为空,我们只需使用.css()将边框颜色更改为红色
如果(用户名===“”){
$('input[name=name]')。css('border','2px纯红')。在('p class=“error msg”>(你叫什么名字?

)之后; 继续=错误; } 如果(用户\电子邮件===“”){ $('input[name=email]')。css('border','2px实心红色')。在('p class=“error msg”>(请提供有效的电子邮件)

')之后; 继续=错误; } 如果(用户消息===“”){ $('textarea[name=message]')。css('border','2px实心红色')。在('p class=“error msg”>(请让我知道您的查询是关于什么的)

')之后; 继续=错误; } //一切看起来都很好!继续。。。 如果(继续) { //要发送到服务器的数据 post_data={'userName':user_name,'userEmail':user_email,'userMessage':user_message}; //Ajax将数据发布到服务器 $.post('../../contact form.php',post_数据,函数(响应){ //从服务器加载json数据并输出消息 如果(response.type==='error') { 输出=''+响应。文本+''; }否则{ 输出=''+响应。文本+''; 警惕(“谢谢你的留言”); //重置所有输入字段中的值 $('.form container input').val(''); $('.form container textarea').val(''); } $(“#结果”).hide().html(输出).slideDown(); }“json”); } }); //重置以前设置的边框颜色并隐藏.keyup()上的所有消息 $(“.form container input,.form container textarea”).keyup(函数(){ $(“.form container input,.form container textarea”).css('border-color',''; $(“#结果”).slideUp(); }); });
PHP代码

<?php
 if($_POST)

所以,让人困惑的代码行是:
$(“#result”).hide().html().slideDown()工作。不需要改变。我看到的一个问题是,您的变量
output
没有被定义为
var
使其成为全局变量

除此之外,php代码似乎通过
die
函数终止了成功响应,因为它不会向输出返回任何内容。更改此项:

if(!$sentMail)
{
    $output = json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration.'));
    die($output);
}else{
    $output = json_encode(array('type'=>'message', 'text' => 'Hi '.$user_Name .' Thank you for your email. I will get back to you as soon as possible.'));
    die($output);
}
致:

希望这有帮助


这是我第二次因为HTML而被烧伤。以前我的HTML是

         <form id="contact_form">
            <div id="result"></div>
            <div class="form-group">
                <label for="name" id="name">Name</label>
                <input type="text" name="name" class="form-control" id="exampleInputName" placeholder="Name" required>
            </div>
            <div class="form-group">
                <label for="Email" id="email">Email address</label>
                <input type="email" name="email" class="form-control" id="exampleInputEmail1" placeholder="Email" required>
            </div>

            <div class="form-group">
                <label for="Message" id="message">Message</label>
                <textarea rows="4" name='message'class="form-control"  placeholder="Message" required></textarea>
            </div>
            <div><span>&nbsp;</span>
                <input type="button" class="btn btn-default" id='submit_btn' value="Submit">
            </div>
        </form>

名称
电子邮件地址
消息
我所做的只是将表单更改为字段集,并将输入更改为

 <button class="btn btn-default" id="submit_btn">Submit</button>
提交

老实说,我不知道为什么会这样,但它确实做到了

我认为错误在于:var\u dump($\u请求);呃…没什么区别。它仍然发送,但DOM没有更改。请尝试“console.log”(“响应:”,Response);”然后检查控制台以查看响应的样子。或者更好的方法是,
console.log('the Respone:',JSON.stringify(response,null,4))
。这将进入ajax回调,json位将使其更具可读性。刚试过这个,我的控制台里也没有。我想我只需要使用另一个联系人表单,让它回显一个字符串json obj“{type:'message','text':'thisamessage'}”。然后,在ajax回调中,尝试JSON.parse(result),然后是result.type。。。等
         <form id="contact_form">
            <div id="result"></div>
            <div class="form-group">
                <label for="name" id="name">Name</label>
                <input type="text" name="name" class="form-control" id="exampleInputName" placeholder="Name" required>
            </div>
            <div class="form-group">
                <label for="Email" id="email">Email address</label>
                <input type="email" name="email" class="form-control" id="exampleInputEmail1" placeholder="Email" required>
            </div>

            <div class="form-group">
                <label for="Message" id="message">Message</label>
                <textarea rows="4" name='message'class="form-control"  placeholder="Message" required></textarea>
            </div>
            <div><span>&nbsp;</span>
                <input type="button" class="btn btn-default" id='submit_btn' value="Submit">
            </div>
        </form>
 <button class="btn btn-default" id="submit_btn">Submit</button>