2014-01-20 2 views
0

저는 몇 개의 입력 필드와 버튼으로 작동하는 div가있는 연락처 양식이 있습니다.이 필드를 클릭하면 양식을 검증하는 함수가 호출되고 모든 것이 OK 일 경우 제출합니다. . 이 함수는 입력 데이터를 BusinessLogic.php 파일의 전송 함수를 호출하는 API.php 파일로 보냅니다. 양식이 제출되면 콜백 함수가 활성화되어야하며 확인 div가 애니메이션 처리되어야합니다. 입력의jQuery 콜백 함수가 실행되지 않았습니다.

html로 : 실제로

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이는 API.php의 기능입니다

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'}); 
    } 
} 
} 

: 여기

<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> 

내 함수의 메일을 보냅니다.

메일을 보내고 있지만 모든 것이 정상입니다. 문제는 submit_form() 함수의 콜백이 절대로 실행되지 않으며 메일이 전송되었다는 확인을 볼 수 없다는 것입니다.

왜 그런 일이 발생하며 어떻게 수정합니까? 감사!

+0

양식의 html 코드를 제공해 주시겠습니까? – vooD

+0

PHP가 JSON을 반환하지 않아 구문 분석 오류가 발생합니다. 대신 $ .get을 사용하거나 PHP가 json을 반환하도록 수정하십시오. –

+0

@vooD 질문을 HTML로 업데이트했습니다. – Igal

답변

2

다른 접근 방식은 $ .getJSON 대신 $ .post를 사용할 수 있습니다 (다른 모든 것은 동일하게 유지됩니다). 원하는 아약스 호출을합니다. 정의 된 매개 변수는 $ _POST 배열에 있습니다 ($ _REQUEST는 괜찮습니다)

+0

감사합니다! 흥미롭게도,이 정확한 코드는 저의 다른 형태로 작동합니다. 그냥 재사용하고 적절한 조정을했지만, 이번에는 어떤 이유로 작동하지 않았습니다. 다시 고마워! – Igal

+0

도메인 간 문제 일 가능성이 있습니까? – Techek

관련 문제