3

可能重复:
将数据数组从 php 发送到 javascript

我正在将带有 ajax 的数组发送到 php 文件。数组是应存储在数据库中的名称列表。为了仔细检查这一点,我尝试回显sql_query在 php 文件中创建的内容。但反应总是

为 foreach() 提供的参数无效...

所以我搜索了一些解决方案,通常答案是“你的'数组'不是数组”。所以我回应了提交给 php 的数组,它在一行上返回所有传递的名称(我认为这意味着数组到达 php 文件中)。

所以这是我的JS...

var tourneyData = {
    tName : tourneyName,
    tNum : number,
    tNames : names, // this is an array
    tInt : international,
    tLig : liga,
    tStars : stars
};

$.ajax({
    type: "POST",
    url: "php/storeTourney.php",
    data: tourneyData,
    datatype: "json",
    success: function(response){
        alert("response " + response);
    }
});

...和PHP代码

$tName = $_POST['tName'];
$tNum = $_POST['tNum'];
$tNames = $_POST['tNames'];
$tInt = $_POST['tInt'];
$tLig = $_POST['tLig'];

$insert = "";
foreach($tNames as $d){ // line pointed in the error message
    $insert += "INSERT INTO NAMES VALUES('test', '".$d."');";
}

echo $insert;

我不完全理解代码中有什么问题。foreach()如果$tNames显然是一个数组,那么 - 语句中可能有什么问题?

4

4 回答 4

2

您需要向 php 提示您要将数据作为数组获取。将 tNames 命名为tNames[]

var tourneyData = {
    tName : tourneyName,
    tNum : number,
    'tNames[]' : names, // this is an array
    tInt : international,
    tLig : liga,
    tStars : stars
};

在这里找到的例子:http: //api.jquery.com/jQuery.post/

如果您要发送更复杂的对象或 n 维数组,则需要考虑使用 JSON。您可以{object: JSON.stringify(object)}在 JS 端和json_parse($_POST['object'])PHP 端使用。

于 2013-01-01T22:21:49.670 回答
1

除了格式错误的请求之外,您还提交了一个 javascript 数组,PHP 将其解释为字符串。从另一个 SO 线程复制的解决方案。

Gareth 在Pass Javascript 数组 -> PHP

您可以使用 JSON.stringify(array) 在 JavaScript 中对数组进行编码,然后使用 $array=json_decode($_POST['jsondata']); 在您的 PHP 脚本中检索它。

于 2013-01-01T22:16:40.157 回答
0

您的 JavaScript 中缺少 POST 变量名称:

(...)

$.ajax({
    type: "POST",
    url: "php/storeTourney.php",
    data: {"data":tourneyData},
    datatype: "json",
    success: function(response){
        alert("response " + response);
    }
});

现在在 POST 数据上尝试 var_dump:

var_dump($_POST['data']);
于 2013-01-01T22:11:47.560 回答
0

因为您正在尝试对字符串进行 foreach,所以您需要将其转换为对象,json_decode以便对其进行迭代。

$tNames = json_decode($_POST['tNames']);

见: http: //php.net/manual/en/function.json-decode.php

于 2013-01-01T22:14:17.580 回答