2014-04-05 2 views
0

나는 ajax 게시물을 사용하여 wordpress plugin에서 양식 값을 제출하고 유효성을 검사합니다. 내가 아약스를 처음 사용하고 처음에는 어떻게 작동하는지 혼란 스럽다.Ajax 게시물 사용 (비트 혼동)

  jQuery.ajax({ 

       type:"post", 
       dataType:"json", 
       url: myAjax.ajaxurl, 
       data: {action: 'submit_data', info: info}, 
       success: function(response) { 
        if (response.type == "success") { 

         alert("success"); 
        } 
        else { 

         alert("fail"); 
        } 
       } 
      }); 

submit_data라는 이름의 PHP 함수이 게시물 데이터를 여기에 표시된 : 이것은 내 아약스 게시물입니다

function submit_data() { 

    $nameErr = $emailErr = $phoneErr = $commentErr = ""; 
    $full = explode("&", $_POST["info"]); 
    $fname = explode(":", $full[0]); 
    $name = $fname[1]; 
    $femail = explode(":", $full[1]); 
    $email = $femail[1]; 
    $fphone = explode(":", $full[2]); 
    $phone = $fphone[1]; 
    $fcomment = explode(":", $full[3]); 
    $comment = $fcomment[1]; 

    if ((empty($name)) || (strlen($name) < 4)){ 

     $nameErr = "Please enter a name"; 
    } 
    else if (!preg_match("/^[a-zA-Z ]*$/", $name)) { 

     $nameErr = "Please ensure you have entered your name and surname"; 
    } 


    if (empty($email)) { 

     $emailErr = "Please enter an email address"; 
    } 
    else if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) { 

     $emailErr = "Please ensure you have entered a valid email address"; 
    } 


    if (empty($phone)) { 

     $phoneErr = "Please enter a phone number"; 
    } 
    else if (!preg_match("/(?:\(?\+\d{2}\)?\s*)?\d+(?:[ -]*\d+)*$/",$phone)) { 

     $phoneErr = "Please ensure you have entered a valid phone number"; 
    } 


    if ((empty($nameErr)) && (empty($emailErr)) && (empty($phoneErr)) && (empty($commentErr))) { 

     $conn = mysqli_connect("localhost", "Mikey", "Change0", "plugindatadb"); 
     mysqli_query($conn, "INSERT INTO data (Name, Email, Phone, Comment) VALUES ('$name', '$email', '$phone', '$comment')"); 
    } 
    else { 

     $errorArray = array(); 
     if (!empty($nameErr)) { 

      $errorArray["nameErr"] = $nameErr; 
     } 
     if (!empty($emailErr)) { 

      $errorArray["emailErr"] = $emailErr; 
     } 
     if (!empty($phoneErr)) { 

      $errorArray["phoneErr"] = $phoneErr; 
     } 
     if (!empty($commentErr)) { 

      $errorArray["commentErr"] = $commentErr; 
     } 

    } 

    die(); 
} 

내 상담자 submit_data 기능이 오류없이 성공적으로 실행 한 다음 코드를 않는 경우입니다 아약스 성공 함수를 실행 하시겠습니까? 또는 submit_data가 끝나기 전에 ajax success 함수가 실행됩니까?

+0

당신 당신은 다시 게시? – Hemc

답변

0

AJAX의 성공 기능은 서버의 응답을 수신 한 후에 실행됩니다.

즉, submit_data이 실행 완료된 후에

오류 : 요청이 실패 할 경우 함수가 호출된다. 이 함수는 세 개의 인수를받습니다. jqXHR (jQuery 1.4.x, XMLHttpRequest) 객체, 발생한 오류 유형을 설명하는 문자열 및 선택적 예외 객체 (발생한 경우). 두 번째 인수 (null 이외)에 가능한 값은 "timeout", "error", "abort"및 "parsererror"입니다. HTTP 오류가 발생하면 errorThrown은 HTTP 상태의 텍스트 부분 (예 : "찾을 수 없음"또는 "내부 서버 오류")을받습니다. 요청이 성공하면 함수


성공이라고합니다. 이 함수는 세 개의 인수를 전달받습니다. dataType 매개 변수에 따라 형식이 지정된 서버에서 반환 된 데이터. 상태를 설명하는 문자열. 및 jqXHR (jQuery 1.4.x, XMLHttpRequest에서) 객체.

Reference

+0

그렇다면 submit_data 함수의 오류 메시지를 ajax 게시물로 반환하면 다음과 같이 말할 수 있습니다. – Mikey

+0

echo json_encode ("errors []"=> "$ errorarray") 그런 다음 내 성공을 참조하십시오 오류로 아약스 게시물의 기능? – Mikey

+0

예, 가능합니다. –