使用javascript AJAX函数将JSON数组传递给PHP文件

时间:2013-11-19 04:45:44

标签: javascript php jquery ajax json

我现在要放弃javascript中的ajax将JSON数组传递给PHP。我有第一个PHP文件,其中我有一个包含文本区域和复选框的表单。该片段如下:

  <form name="drugForm" onsubmit="return validateForm()" method="post">
Drug name: <input type="text" name="dname"></pre>
  <pre>

<input type="checkbox" name="drug" value="one">1    <input type="checkbox" name="drug" value="two">2</br>
<input type="checkbox" name="drug" value="three">3  <input type="checkbox" name="drug" value="four">4</br></br>
    <input type="submit" value="Submit">
  </pre>

在这里,使用validateForm()调用我调用javascript来检查文本区域是否已填满,并且至少选中了一个复选框。此外,它在javascript中创建数组以获取选中的值。这里有这个js我希望通过使用ajax转换它来将此数组发送到PHP文件。 COED片段如下:

 function validateForm()
 {
  var x=document.forms["drugForm"]["dname"].value;
  var y=document.drugForm.drug;
  var y_array = new 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);
    }

}
   $.ajax({
    type: "POST",
    url: "drug_form3.php",
    dataType: 'json',
    data: {json: JSON.stringify(y_array)},
        });

alert("Check one checkbox at least");
return false;
  }
 }

这里,随着js数组的创建,每当我使用alert打印值时,它都会给出正确的结果。但是,当我试图将它发送到下一个PHP文件,即使在php文件中使用json_decode之后,也无法使用PHP打印数组。下面是第二个PHP的代码片段:

 <body>
 <?php
 $json = $_POST['json'];
 $array=json_decode($_POST[$json]);

  // here i would like use foreach:

  print_r ($array);
  echo "Its in form2 and working fine";
 ?>
 </body>

请指导我这个问题,如何使用javascript将json数组传递给PHP文件。

3 个答案:

答案 0 :(得分:1)

您将以下几行混淆:

 $json = $_POST['json'];
 $array=json_decode($_POST[$json]);

更改为:

 $array=json_decode($_POST['json']);

答案 1 :(得分:0)

你可以尝试这个并检查你是否在这里获得了帖子值,

 $json = $_POST['json'];
 echo "<pre>"; print_r($json);echo "</pre>";

答案 2 :(得分:0)

试试这个,看看它是否适合你

$array = json_decode($_POST['json'], true);