2014-12-01 2 views
0

방문자가 메일 링리스트에 가입 할 수있는 양식을 작성 중입니다.ajax를 사용하여 양식 처리

코드는 다음과 같습니다가 아약스를 사용하여 처리 될 수 있도록

function subscribe_form() { 
     global $my_subme; 

     $form = ''; 
     $msg = ''; 

     if (isset($_GET['status'])) { 
      if ('subscribed' === $_GET['status']) { 
       $msg = __('Thank you for confirming your subscription', 'subme'); 
      } else if ('unsubscribed' === $_GET['status']) { 
       $msg = __('You have successfully unsubscribed.', 'subme'); 
      } else { 
       $msg = __('Sorry, but something went wrong.', 'subme'); 
      } 

      $form .= '<p>'; 
      $form .= esc_html($msg); 
      $form .= '</p>'; 
     } else { 
      /* Process the form when submitted */ 
      if ((isset($_POST['subscribe']) || isset($_POST['unsubscribe'])) && isset($_POST['source']) && 'widget' === $_POST['source']) { 
       /* Check nonce */ 
       if (! isset($_POST['subme_widget_nonce']) || ! wp_verify_nonce($_POST['subme_widget_nonce'], 'subme_widget')) { 
        return; 
       } 

       if (! isset($_POST['email'])) { 
        return; 
       } 

       if (! $my_subme->is_valid_email(strtolower($_POST['email']))) { 
        $msg = __('Sorry, but this does not seem like a valid email address.', 'subme'); 

       } else { 
        if (isset($_POST['subscribe'])) { 
         $msg = $my_subme->subscribe($_POST['email']); 
        } else { 
         $msg = $my_subme->unsubscribe($_POST['email']); 
        } 
       } 
      } 

      $form .= '<form method="post">'; 
      $form .= wp_nonce_field('subme_widget', 'subme_widget_nonce', true, false); 
      $form .= '<input type="hidden" name="source" value="widget" />'; 
      $form .= '<p>'; 
      $form .= __('Your email address:', 'subme') . '<br />'; 
      $form .= '<input type="text" name="email" /><br /><br />'; 
      $form .= '<input type="submit" name="subscribe" value="' . __('Subscribe', 'subme') . '" />'; 
      $form .= ' '; 
      $form .= '<input type="submit" name="unsubscribe" value="' . __('Unsubscribe', 'subme') . '" />'; 
      $form .= '</p>'; 
      $form .= '</form>'; 

      if (strlen($msg) > 0) { 
       $form .= '<p>'; 
       $form .= esc_html($msg); 
       $form .= '</p>'; 
      } 
     } 

     echo $form; 
     echo '</div>'; 

    } 


subscribe_form(); 

가 어떻게이 코드를 변경합니까? 보시다시피, 현재 사용자가 양식을 제출할 때 페이지가 새로 고쳐집니다.

+0

왜 그 기능입니까? –

+0

나는 (내 질문에 관련되지 않은) 플러그인에 추가 된 양식을 가지고 :) –

답변

0

두 개의 제출이있는 경우 두 번째 양식 만 양식으로 전송됩니다 ... 2 개의 양식과 같은 작업을 수행하거나 onclick 이벤트를 추가하여 이름이나 유형 또는 숨겨진 값을 변경해야합니다. 다음과 같습니다.

<input type="submit" onclick="document.getElementById('action').value='subscribe'" value="Subscribe" /> 
<input type="submit" onclick="document.getElementById('action').value='unsubscribe'" value="Unsubscribe" /> 
<input type="hidden" name="action" id="action" /> 
0

1- 그 코드는 PHP입니다. 이것은 서버 측입니다.

2.- 클라이언트 측. 이 클라이언트가 구독하기를 원한다는 데이터를 서버에 보내는 코드 자바 스크립트가 있어야합니다.

+0

내 코드를 고려할 때 자바 스크립트 코드는 어떻게 보이나요? 코드 예제를 제공해 주시겠습니까? –

관련 문제