我有这个数组:
$users = array();
// Finally, loop over the results
foreach( $select as $email => $ip )
{
$users[$email] = $ip;
}
现在我想将此数组传递给ajax并在另一个脚本中打印:
$html="<center><a href=\"#\" id=\"check_spam\" onclick=\"$.ajax({type: 'POST', url: 'mcheck.php', data:'users=$users', success: function(data){ $('#results').html(data);}});\">Check users for spam</a></center>";
mcheck.php
echo $_POST['users'];
此代码不起作用。我怎么能这样做?
答案 0 :(得分:2)
最好的方法是将数组编码为JSON格式。
在PHP中:
$users_json = json_encode($users);
//在javascript中解码
var obj = JSON.parse(json_str);
答案 1 :(得分:2)
当Sergiu Costas指出时,最好的方法是对JSON进行编码然后解码,但你也可以尝试:
$html="<center><a href=\"#\" id=\"check_spam\" onclick=\"$.ajax({type: 'POST', url: 'mcheck.php', data: '" . http_build_query(array('users' => $users)) . "', success: function(data){ $('#results').html(data);}});\">Check users for spam</a></center>";
如果您的$ users数组是:
$users = array( array('email' => 'a@email.com'), array('email' => 'b@email.com')));
然后http_build_query('users' => $users)
将生成:
users%5B0%5D%5Bemail%5D=a%40email.com&users%5B1%5D%5Bemail%5D=b%40email.com
这是url编码的版本:
users[0][email]=a@email.com&users[1][email]=b@email.com
将在mcheck.php中解码回数组
答案 2 :(得分:0)
如果你想将php数组传递给js,你可以json_encode
数组来做到这一点。
$html="<center><a href=\"#\" id=\"check_spam\" onclick=\"$.ajax({type: 'POST', url: 'mcheck.php', data:'users=".json_encode($users)."', success: function(data){ $('#results').html(data);}});\">Check users for spam</a></center>";