【发布时间】:2012-12-16 09:15:27
【问题描述】:
我正在将一个带有 ajax 的数组发送到一个 php 文件。数组是应存储在数据库中的名称列表。为了仔细检查这一点,我尝试回显在 php 文件中创建的sql_query。但响应总是
为 foreach() 提供的参数无效...
所以我在 SO 中搜索了一些解决方案,答案通常是“你的 'Array' 不是 Array”。所以我回应了提交给 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;
我不完全理解代码中有什么问题。如果$tNames 显然是一个数组,那么foreach() 语句中可能有什么问题?
【问题讨论】:
-
你确定是数组吗?你有
var_dump它来验证是这样吗?如果是数组就不会报错。 -
$tNames = (array)$_POST['tNames'];
-
我同意 jMax,在您的 PHP 文件顶部添加一些测试数据,并确保在使用 JavaScript 发送之前逻辑正常
-
在这种情况下,PHP 只看到格式化为 Javascript 数组的字符串。你得想办法把js数组转成PHP数组。
-
这可能是另一个问题的类似副本,但它不是提议的副本的完全相同的副本。是相反的问题,从 JS 到 PHP,而不是从 PHP 到 JS。
标签: php javascript ajax arrays json