我有一個聯繫表單,有幾個輸入字段和一個作爲按鈕的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()函數的回調永遠不會被觸發,我也看不到郵件發送的確認。
爲什麼會發生,我該如何解決?謝謝!
您能否提供表單的html代碼? – vooD
你的php沒有返回JSON,導致拋出一個parseerror。使用$ .get來代替,或者修改你的php讓它返回json。 –
@vooD我用HTML更新了這個問題。 – Igal