シナリオは次のとおりです。チェックボックスがほとんどない連絡フォームがあります。
<input type="text" name="cola[]" value="coke" />
<input type="text" name="cola[]" value="pepsi" />
<input type="text" name="cola[]" value="rc" />
jQueryのシリアル化を使用して、データ文字列を私のmailer.php
ように送信しました:
$.ajax({
type: "POST",
url: "http://mydomain.com/mailer",
data: dataString,
success: function() {//some function}
});
.php
htaccess 書き換え規則により、URL から拡張子を省略しなければならなかったことに注意してください。3 つのチェックボックスがすべてオンになっている場合、データ文字列は次のようになります&cola=coke&cola=pepsi&cola=rc
。を使って確認しconsole.log
ました。
mailer.php
次のようになります。
$cola = $_POST["cola"];
// other code
$message = "<p>" . $cola . "</p>";
// code to mail it out
ただし、メールが正常に送信されると、メールの本文には「cola、pepsi、rc」ではなく「Array」と表示されます。
私のhtaccessの書き換え条件と関係があるのではないかと感じています。これは次のようになります。
RewriteEngine On
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]
私の書き換え条件は、URL の末尾をすべて削除/
し、.php ファイル拡張子を消去して、URL が次のようになるようにすることです。domain.com/pretty
配列の内容ではなく「配列」というメッセージが表示される理由を診断してくれる人はいますか? ありがとうございました!