将php数组传递给ajax

时间:2017-06-22 13:33:55

标签: php jquery arrays ajax

我有这个数组:

    $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'];

此代码不起作用。我怎么能这样做?

3 个答案:

答案 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>";