0

这是场景:我有一个带有几个复选框的联系表:

<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

但是,在成功邮寄后,电子邮件正文仅显示“Array”,而不是“cola, pepsi, rc”。

我感觉这可能与我在 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

谁能帮我诊断为什么我收到消息“数组”而不是数组内容?谢谢!

4

2 回答 2

4

这不是您的 .htaccess 问题。事实上, $_POST['cola'] 是一个像这样的数组:

Array 
(
[0] => 'cola'
[1] => 'pepsi'
[2] => 'rc'
)

您需要遍历数组并获取您的信息。

希望这有帮助。

于 2012-04-29T19:36:41.003 回答
2

这与 htaccess 无关,您输出的 $cola 数组错误!

这是正确的方法:

$cola = implode(', ', $cola);
$message = '<p>' . $cola . '</p>';

提示:如果您不打算在 PHP 中解析字符串中的任何变量,请不要使用双引号“”,而是使用单引号 '',因为“”被解析,它会提高性能;更多的执行时间。

于 2012-04-29T19:41:46.807 回答