jQuery ajax请求发送多个数组并在php脚本中访问它们的值

时间:2012-05-26 11:21:20

标签: php jquery ajax

我正在尝试将多个数组传递给我的脚本,然后我将在数据库中插入这些数组值。在Branches_Control.php中我想将这些数组值保存在PHP变量中,然后将它们传递给我的模型并循环遍历该PHP数组变量以插入 他们在DB。

这是我的AJAX请求:

var finalplaces = [];
var finallongArr = [];
var finallatArr = [];
var finalphone = [];
var finalcompanyName = [];

for (var i = 0; i < places.length; i++) {
    if (finalplaces[i] != null) {
        finalplaces[i].push(places[i])
        finallongArr[i].push(longitudeArr[i]);
        finallatArr[i].push(latitudeArr[i]);    
        finalphone[i].push(phone[i]);
        finalcompanyName[i].push(companyName[i]);
    }
}

$.ajax({
    type: 'POST',
    url: "Branches_Control.php",
    data: "Places=" + finalplaces +
            "&longitudeArr=" + finallongArr +
            "&latitudeArr=" + finallatArr +
            "&phones=" + finalphone +
            "&companyNames=" + finalcompanyName,
    success: function(data) {
        alert(data + "Succese");
        document.getElementById("asd").innerHTML = data;
    }
});

我想在Branches_Control.php中做什么

$places = $_POST['Places'];
echo $places[0];

有谁能告诉我为什么这不起作用?

2 个答案:

答案 0 :(得分:2)

你的错误就在这里:

   data: "Places=" + finalplaces +
            "&longitudeArr=" + finallongArr +
            "&latitudeArr=" + finallatArr +
            "&phones=" + finalphone +
            "&companyNames=" + finalcompanyName,

如果以字符串形式发送数据,则必须使用这些数组进行字符串化,例如:

"&longitudeArr=" +JSON.stringify(finallongArr )

然后在服务器端你必须进行json解码:

 $longitudeArr= json_decode($_POST['longitudeArr'])

或者更简单地使用jquery power,你可以像对象一样传递数据:

data:{longitudeArr:finallongArr ,  latitudeArr: finallatArr , phones: finalphone .....}

这最后一种方法的优点是在php网站上,你立刻得到了数组:

$longitudeArr= $_POST['longitudeArr'] //this is an array

尝试。

答案 1 :(得分:1)

在您的代码中:

var finalplaces = [];
for (var i = 0; i < places.length; i++) {
    if (finalplaces[i] != null) {
        finalplaces[i].push(places[i])
    }
}

条件if (finalplaces[i] != null)不能是true因为数组是空的,所以你永远不会填充数组。
我想你想要反转测试:{{1 }}