将JS数组传递给PHP页面

时间:2012-04-17 07:13:32

标签: php javascript

我通过JS Event捕获已更改字段的值并将该数据捕获到temp1数组中,例如,如果您更改字段名称“name”,则它将获得字段名称“id”并将其存储到temp1中。但主要的问题是如何将这个数组传递给php表单处理页面,在那里我可以得到这个temp1的值。

我尝试使用JSON,但它并没有帮助我。

我尝试的代码是:$ .post('/ somepage.php',temp1);但它没有用。

请帮我解决这个问题。

我在页面中包含了jquery.js lib。

  <script type="text/javascript">
  var temp1 = new Array();

  function onChangeTest(changeVal)
  {    
 //alert("Field u changed was: " + changeVal.id) 

 temp1.push(changeVal.id);

 tmsg = "Fields u changed so far are:"
 for(var i=0;i<temp1.length;i++)
 {
 //document.write("<b>temp1["+i+"] is </b>=>"+temp1[i]+"<br>");
 tmsg = tmsg + " " + temp1[i];
 }
 alert(tmsg);
 }
 //$.post('/somepage.php', temp1);
 </script>

3 个答案:

答案 0 :(得分:1)

您需要的是:

$.post("/somepage.php", { 'temp1[]': temp1 });

official documentation中也可以看到这里有各种数据的例子。

答案 1 :(得分:1)

这个问题对我来说很简单,请尝试以下代码并让我知道结果......

function onChangeTest(changeVal)
{
    //alert("Field u changed was: " + changeVal.id)
    var temp1 = new Array();
    temp1.push(changeVal);

    tmsg = "Fields u changed so far are:"
    for(var i=0;i<temp1.length;i++){
        //document.write("<b>temp1["+i+"] is </b>=>"+temp1[i]+"<br>");
        //tmsg = tmsg + " " + temp1[i];
        var newHidInp = document.createElement('input');
        newHidInp.type  = 'hidden';
        newHidInp.name  = 'outArray[]';
        newHidInp.value = temp1[i];
        document.frm.appendChild(newHidInp);
    }
    return false;
}

HTML:

 <form name="frm" action="" method="POST" >
  <tr>
<td><font color="red">*</font>Name:<input type="text" name="name" id="name" size="25" onkeyup="onChangeTest('name')" /></td>
<td><font color="red">*</font>Age<input type="text" name="age" id="age" size="25" onkeyup="onChangeTest('age')" />
<input type="submit" name="submit" value="SUBMIT">
</td>
</form>
 </body>
</html>

PHP:

<?php
print("<pre>");
print_r(array_unique($_POST['outArray']));

?> 

答案 2 :(得分:0)

更改存储更改的方式。如果您将字段ID存储为对象键(例如temp1["username"] = true),则可以轻松使用$.post("/somepage.php", temp1)并在PHP中通过$_POST["username"]等读取值。