2014-01-20 75 views
0

我有一个联系表单,有几个输入字段和一个作为按钮的div - 当我点击它时,它会调用一个验证表单的函数,如果一切正常,它会提交它。该功能将来自输入的数据发送到API.php文件,该文件要求BusinessLogic.php文件中的发送功能。一旦表单被提交 - 一个回调函数应该被激活,它应该动画一个确认div。未执行jQuery回调函数

的输入端的HTML:

<div id="contact_inputs_block"> 
    <div class="div_contact_form_input_box div_input_name"> 
     <input type="text" name="Name" placeholder="* Name" id="name"> 
    </div> 
    <div class="div_contact_form_input_box div_input_phone"> 
     <input type="tel" name="Phone" placeholder="* Phone" id="phone"> 
    </div> 
    <div class="div_contact_form_input_box div_input_email"> 
     <input type="email" name="Email" placeholder="* Email" id="email"> 
    </div> 
</div> 
<div class="form_confirmation_wraper"> 
    <div id="div_form_confirmation"> 
     Message sent. 
    </div> 
    <div class="div_send_form"> 

    </div> 
</div> 

这里是我的功能:

function submit_form(language) 
{ 

var email_str = $("#email").val(); 
var errors = new Array(); 

$("#contact_inputs_block>div:not(:last-child)").css({'border-color' : '#a5957e', 'background-color' : '#f8f8f8'}); 


if ($("#name").val()=="") 
{ 
    errors.push(".div_input_name"); 
} 
if(!validate_email(email_str)) 
{ 
    errors.push(".div_input_email"); 
} 
if ($("#phone").val()=="") 
{ 
    errors.push(".div_input_phone"); 
} 


if (errors.length == 0) 
{ 


    $.getJSON("inc/API.php", 
    { 
     command : "send_contact_form", 
     name : $("#name").val(), 
     email : email_str, 
     phone : $("#phone").val(), 
     message : $("#message").val().replace(/\n/g, '<br>'), 
     form_language: language 
    } ,function(){ 
     alert("sent"); 
     $("#div_form_confirmation").animate({opacity:1}, 1000, function(){ 
      setTimeout($("#div_form_confirmation").animate({opacity:0}, 3000, function(){location.reload()}),6000); 
     }); // end callback function 
    }); // end getJSON 
} // end if 
else 
{ 
    for (var i = 0; i <= errors.length; i++) 
    { 
     $(errors[i]).css({'border-color' : '#E60005', 'background-color' : '#ffc4c9'}); 
    } 
} 
} 

这是API.php功能:

include_once 'BusinessLogic.php'; 
session_start(); 

$command = $_REQUEST["command"]; 

switch($command) 
{ 
    case "send_contact_form" : 
     send_contact_form($_REQUEST["name"], $_REQUEST["email"], 
      $_REQUEST["phone"], $_REQUEST["message"], $_REQUEST["form_language"]); 
     break; 
} 

和BusinessLogic.php实际发送邮件。

邮件正在发送,一切都还好。问题是submit_form()函数的回调永远不会被触发,我也看不到邮件发送的确认。

为什么会发生,我该如何解决?谢谢!

+0

您能否提供表单的html代码? – vooD

+0

你的php没有返回JSON,导致抛出一个parseerror。使用$ .get来代替,或者修改你的php让它返回json。 –

+0

@vooD我用HTML更新了这个问题。 – Igal

回答

2

不同的方法可能是使用$ .post而不是$ .getJSON(其他所有内容都保持不变)。它会进行所需的ajax调用。定义的参数将在$ _POST数组中($ _REQUEST很好)

+0

它的工作,谢谢!有趣的是,这个确切的代码适用于我的其他形式,我只是重复使用它并作出适当的调整,但由于某种原因,这次不起作用。再次,谢谢! – Igal

+0

跨域问题也许? – Techek