2017-12-18 284 views
5

Acymailing Joomla! Kullanmak istiyorum bileşen ı basit senaryoyuAJAX tarafından gönderilen formdan nasıl yanıt alınır?

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

ve şekli olmalıdır durumda example.com

olmayan Joomla sitesinden abonelikleri yönetmek için example.com/mailer monte

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

Her şey başarı dışında iyi çalışıyor, hata durumları ...

Joomla A cymailing ajax yanıtları

işlemek için sub.php dosyası var
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'); 
      } 
     } 
    } 

Ve JSON & ctrl com_acymailing = index.php? seçeneği ile aynı forma Joomla yan kaydı hakkında benziyor = alt

message Subscribe confirmed 
type success 
code 3 

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

soru şudur: bu gönderim durumları, dış gönderim formunda (ornek.com sayfası) başarı, hata, halihazırda altbükey vb. nasıl elde edilir?

+2

ajax çağrı grubunuzda 'dataType'' 'json'' olarak ayarlayın. Başarıya değişken olarak “başarı (veri)” gibi bir değişken koyun ve bu kapsamı “data.message” gibi kullanın. Başka argümanların başarıya geçmesi için jQuery doc'larını okuyun, hata ... – frz3993

+0

Teşekkürler ama başarı yok :( 7 saat içinde bu iş parçacığı için lütuf ayarlayacağım – PipBoy2000

+0

Neler olup bittiğini daha iyi bilmenize yardımcı olacak: chrome dev araçları, ağ izleyicisi ve istek durumunu kontrol edin? 200/ konsol sekmesinde herhangi bir uyarı görüyor musunuz? –

cevap