2013-01-17 137 views
1

我想通过Ajax如下访问阵列通过Ajax

var arr={'a':1,'b':2,'c':3}; 
$.ajax({ 
    type:'POST', 
    url:'data.php', 
    data:arr, 
}); 

在PHP我想遍历数组中的所有元素有所如下

传递一个关联数组的PHP传递
$data=$_POST; 
foreach($data as $k=>$v) 
{ 
    echo $k.'='.$v; 
} 

有人可以在这方面帮助我。

+0

上述代码有什么问题? –

+0

你做了什么是正确的,它会工作。 –

回答

0

您可以通过

var newarr = JSON.stringify(arr); 
$.ajax({ 
    type:'POST', 
    url:'data.php', 
    data:{dat:newarr} , 
}); 

,并在PHP这样做

$data = json_decode($_POST['dat']); 
foreach($data as $a){ 
    echo $a; 
    } 

你也可以使用serializeArray()

$.ajax({ 
    type:'POST', 
    url:'data.php', 
    data:{dat: $(arr).serializeArray()} , 
}); 

然后$_POST['data']将是一个数组

+0

$ _POST ['data']不访问数组 – Tyranicangel

+0

为什么它是json编码的?他的对象将以数组形式接收的任何方式 –

0
<?php 
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 

var_dump(json_decode($json)); 
var_dump(json_decode($json, true)); 

?> 

上面的例子将输出:

object(stdClass)#1 (5) { 
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["e"] => int(5) 
} 

array(5) { 
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["e"] => int(5) 
} 

From -PHP manual

0

该做的工作

data:{dat:arr} 

对jQuery和

$data=$_REQUEST['dat'] 

上php

+0

这并不能解释你为什么不能在之前迭代'$ _POST'。 –