2016-08-23 3 views
0

htmlページのフォームからメールに値を送る場合には、 という3つのファイルがあります:test.htmlフォームグループチェックボックス、contact.php、contact.jsajaxを使ってフォームチェックボックスからメールに値を渡す方法

これはcontact.jsある:

$(function() { 

$('#contact-form').validator(); 

$('#contact-form').on('submit', function (e) { 
    if (!e.isDefaultPrevented()) { 
     var url = "contact.php"; 

     $.ajax({ 
      type: "POST", 
      url: url, 
      data: $(this).serialize(), 
      success: function (data) 
      { 
       var messageAlert = 'alert-' + data.type; 
       var messageText = data.message; 

       var alertBox = '<div class="alert ' + messageAlert + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>' + messageText + '</div>'; 
       if (messageAlert && messageText) { 
        $('#contact-form').find('.messages').html(alertBox); 
        $('#contact-form')[0].reset(); 
       } 
      } 
     }); 
     return false; 
    } 
}) 
}); 

これは

$fields = array('name' => 'Name', 'surname' => 'Surname', 'phone' => 'Phone', 'email' => 'Email', 'message' => 'Message' 'checkboxes' => 'Colors'); 

フォーム基を郵送するために、フォームを処理するためcontact.phpある:

色のオプションを選択するか、メール送信された結果がカラーになった後、すべての三色を選択すると
<div class="form-group"> 
<div class="col-md-12"> 
    <label>Colors:</label> 
</div> 
<div class="col-md-12"> 
    <label class="checkbox-inline" for="form_checkboxes1"> 
     <input type="checkbox" name="checkboxes[]" id="form_checkboxes1" value="Blue"> + Blue 
    </label> 
    <label class="checkbox-inline" for="form_checkboxes2"> 
     <input type="checkbox" name="checkboxes[]" id="form_checkboxes2" value="Green"> + Green 
    </label> 
    <label class="checkbox-inline" for="form_checkboxes3"> 
     <input type="checkbox" name="checkboxes[]" id="form_checkboxes3" value="Orange"> + Orange 
    </label> 
</div> 

問題がある:今配列

、私は追加contact.php内の行を変更するためにトライ

$checkboxes = implode(',',$_POST['checkboxes']); 

しかしcontact.phpでKODのないsuccsess

残りがありません:

try{ 
    $emailText = "text"; 
    foreach ($_POST as $key => $value) { 
     if (isset($fields[$key])) { 
      $emailText .= "$fields[$key]: $value\n";} 
     } 
     mail($sendTo, $subject, $emailText, "From: " . $from); 
     $responseArray = array('type' => 'success', 'message' => $okMessage); 
    } 
+0

アレイのように、いずれかのプロセスでは、アレイは '名=「チェックボックス[]」'またはHTMLを変更して、それぞれのチェックボックスに独自の名前すなわち '名前を付けを使って、あなたの配列を渡すために、ブラウザを尋ねたので、 – RiggsFolly

+0

Nikhil Vaghlaのこのコードはうまく動作します。 – tiker

答えて

0

このコードを試してみてください。 あなたのコードは色が合っているのであなたのコードはうまくいかないので、あなたはあなたの配列を暗示する必要があります。 私はこれを試して、それはうまく動作します。

try{ 
    $emailText = "text"; 
    foreach ($_POST as $key => $value) { 

     if (is_array($value)) { 
      $emailText .= "$fields[$key]: " . implode(',', $value) . "\n"; 
      continue; 
     } 
     if (isset($fields[$key])) { 
      $emailText .= "$fields[$key]: $value\n";} 
     } 
     mail($sendTo, $subject, $emailText, "From: " . $from); 
     $responseArray = array('type' => 'success', 'message' => $okMessage); 
    } 
+0

うーん、ありがとうございました! !!チャーム – tiker

+0

完了しました、ありがとう!乾杯 – tiker

関連する問題