我有第一个PHP文件,我有表格,它的动作是指导我下一个php文件。代码段如下:
<form name="drugForm" action="drug_form2.php" onsubmit="return validateForm()" method="post">
在函数validateForm(javascript)中,我正在检查文本区域是否已填满,并且至少选中了一个复选框。我在javascript中创建数组,以获取复选框值。 js代码如下:
function validateForm()
{
var x=document.forms["drugForm"]["dname"].value;
var y=document.drugForm.drug;
var y_array = [];
if (x==null || x=="")
{
alert("First name must be filled out");
return false;
}
else if (Boolean(x))
{
for(k=0;k<y.length;k++)
{
if(y[k].checked)
{
var arr_val = y[k].value;
y_array.push(arr_val);
//alert(arr_val);
}
}
for(m=0;m<y.length;m++)
{
if(y[m].checked)
{
for(l=0;l<y_array.length;l++)
{
alert("This is array " + y_array[l]);
}
dataString = y_array ; // array?
var jsonString = JSON.stringify(dataString);
$.ajax({
type: "POST",
url: "drug_form2.php",
data: {data : jsonString},
cache: false,
success: function(){
alert("OK");
}
});
//alert("The array length is " + y_array.length);
//return true;
}
}
alert("Check one checkbox at least");
return false;
}
}
这里,从这个函数我想发送数组到php,因此我引用了以下链接,但它不起作用:
Send array with Ajax to PHP script
现在,我的查询如下:
为什么我无法在第二个for循环中打印数组值?和 如何在PHP文件中访问javascript数组?
我也有PHP文件来检查数组值是否正确打印,但它没有给出这些值。下面是在PHP文件中获取javascript数组的第二个PHP文件:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<?php
$data = json_decode(stripslashes($_POST['data']));
// here i would like use foreach:
foreach($data as $d){
echo $d;
}
echo "Its in form2 and working fine";
?>
</body>
</html>
我在正确的地方包括ajax功能吗?
答案 0 :(得分:0)
您可以将javascript数组中的每个项目附加到由唯一字符分隔的字符串中。至于我的经验,比将它作为一个数组传递更容易。然后将字符串传递给PHP。
在PHP代码中,使用字符串方法explode
从字符串中创建一个数组。然后使用其余的代码逻辑。
答案 1 :(得分:0)
如果javascript数组是简单数组,则将其更改为csv并传递给它有字符串。
在php服务器端,只需爆炸该字符串,你将再次在php中获取数组。
<强> javscript 强>
$.ajax({
type: "POST",
url: "drug_form2.php",
data: {data : y_array.join(',')},
cache: false,
success: function(){
alert("OK");
}
});
<强> PHP 强>
$array= explode(",", $_POST['data']);