2014-01-20 78 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