2017-12-18 28 views
5

私はAcymailing Joomla!を使いたいです!コンポーネントは、私は単純なスクリプトAJAXから提出されたフォームからの回答を得るには?

$(function() { 
    $('form').on('submit', function (e) { 
     e.preventDefault(); 
     $.ajax({ 
     type: 'post', 
     url: 'https://example.com/mailer/index.php?option=com_acymailing&ctrl=sub', 
     data: $('form').serialize(), 
     success: function() { 
      swal('Great success!'); 
     } 
     }); 
    }); 
    }); 

してフォームを持っている場合、example.com

上の非Joomlaのサイトからサブスクリプションを管理するためにexample.com/mailerに設置

<form class="form-inline" action="https://example.com/mailer/index.php?option=com_acymailing&ctrl=sub" method="post"> 
    <div class="form-group"> 
     <label class="sr-only" for="user_name">Email address</label> 
     <input id="user_name" type="text" name="user[name]" value="" class="form-control" placeholder="Email"> 
    </div> 
    <div class="form-group"> 
     <label class="sr-only" for="user_email">Password</label> 
     <input id="user_email" type="text" name="user[email]" value="" class="form-control" placeholder="Password"> 
    </div> 
    <button type="submit" class="btn btn-default">Sign Up!</button> 
    <input type="hidden" name="user[html]" value="1" /> 
    <input type="hidden" name="acyformname" value="formAcymailing1" /> 
    <input type="hidden" name="ctrl" value="sub"/> 
    <input type="hidden" name="task" value="optin"/> 
    <input type="hidden" name="redirect" value="https://example.com"/> 
    <input type="hidden" name="option" value="com_acymailing"/> 
    <input type="hidden" name="visiblelists" value=""/> 
    <input type="hidden" name="hiddenlists" value="1"/> 
</form> 

成功は例外ではありません。エラー状態...

Joomla A cymailingは、Ajaxレスポンス

if($config->get('subscription_message',1) || $ajax){ 
     if($allowSubscriptionModifications){ 
      if($statusAdd == 2){ 
       if($userClass->confirmationSentSuccess){ 
        $msg = 'CONFIRMATION_SENT'; 
        $code = 2; 
        $msgtype = 'success'; 
       }else{ 
        $msg = $userClass->confirmationSentError; 
        $code = 7; 
        $msgtype = 'error'; 
       } 
      }else{ 
       if($insertMessage){ 
        $msg = 'SUBSCRIPTION_OK'; 
        $code = 3; 
        $msgtype = 'success'; 
       }elseif($updateMessage){ 

        $msg = 'SUBSCRIPTION_UPDATED_OK'; 
        $code = 4; 
        $msgtype = 'success'; 
       }else{ 
        $msg = 'ALREADY_SUBSCRIBED'; 
        $code = 5; 
        $msgtype = 'success'; 
       } 
      } 
     }else{ 
      if($modifySubscriptionSuccess){ 
       $msg = 'IDENTIFICATION_SENT'; 
       $code = 6; 
       $msgtype = 'warning'; 
      }else{ 
       $msg = $modifySubscriptionError; 
       $code = 8; 
       $msgtype = 'error'; 
      } 
     } 

     if($msg == strtoupper($msg)){ 
      $source = acymailing_getVar('cmd', 'acy_source'); 
      if(strpos($source, 'module_') !== false){ 
       $moduleId = '_'.strtoupper($source); 
       if(acymailing_translation($msg.$moduleId) != $msg.$moduleId) $msg = $msg.$moduleId; 
      } 
      $msg = acymailing_translation($msg); 
     } 

     $replace = array(); 
     $replace['{list:name}'] = ''; 
     foreach($myuser as $oneProp => $oneVal){ 
      $replace['{user:'.$oneProp.'}'] = $oneVal; 
     } 
     $msg = str_replace(array_keys($replace),$replace,$msg); 

     if($config->get('redirect_tags', 0) == 1) $redirectUrl = str_replace(array_keys($replace),$replace,$redirectUrl); 

     if($ajax){ 
      $msg = str_replace(array("\n","\r",'"','\\'),array(' ',' ',"'",'\\\\'),$msg); 
      echo '{"message":"'.$msg.'","type":"'.($msgtype == 'warning' ? 'success' : $msgtype).'","code":"'.$code.'"}'; 
     }elseif(empty($redirectUrl)){ 
      acymailing_enqueueMessage($msg,$msgtype == 'success' ? 'info' : $msgtype); 
     }else{ 
      if(strlen($msg)>0){ 
       if($msgtype == 'success') acymailing_enqueueMessage($msg); 
       elseif($msgtype == 'warning') acymailing_enqueueMessage($msg,'notice'); 
       else acymailing_enqueueMessage($msg,'error'); 
      } 
     } 
    } 

を処理するためのsub.phpファイルを持っているとJSONは、index.phpのことで、同じフォームにJoomlaの側登録のように見えます?オプション= com_acymailing & CTRL =サブ

message Subscribe confirmed 
type success 
code 3 

{"message":"Subscribe confirmed","type":"success","code":"3"} 

質問:どのように外部フォーム(、example.comのページ)で、その提出ステータスの成功、エラー、既にサブバイトなどを取得するには?

+2

あなたのajax呼び出しで 'dataType'を' 'json''に設定してください。 'success(data)'のように引数に成功の変数を入れ、 'data.message'のようなスコープ内でそれを使用します。 jQueryの他の引数は、成功、エラーに渡されるもののためにドキュメント... – frz3993

+0

おかげで私はそれがより良い何が起こっているかを知るのに役立ちます。このスレッド – PipBoy2000

+0

のために報奨金を設定します 7時間以内に成功を:(読む:あなたが開くことができますChromeのデベロッパーツール、ネットワークモニタ、リクエストのステータスを確認してください。コンソールのタブに200〜 の警告が表示されますか? –

答えて

関連する問題