将数组从Javascript发布到PHP

时间:2011-08-05 14:45:07

标签: php javascript jquery arrays post

我在Javascript中有一个数组,我试图传递给PHP。我的数组看起来像这样。

 Array[0]
   "empNo" : "1347"
   "empName" : "John Doe"  

我正在使用此javascript构建此数组:

$('input[type=text]').each(function()
{
             if ($(this).attr("value").length>0)
             {
                  param[$(this).attr("id")]=$(this).attr("value");
             }            
});

然后我使用

将数组传递给php
$.post("example.php",param)

然后在php中,当我尝试与这样的帖子进行交互时:

$emp=$_POST['empNo'];
$name=$_POST['empName'];
echo ($_GET[0]);//this is for testing 

它抛出一个错误,说The Indexes of empNo and empName are not Defined

它还说0 is an undefined offset 谢谢你的帮助

3 个答案:

答案 0 :(得分:5)

而不是循环并手动构建您的数据,只需对整个表单执行此操作。

var data = $('form').serialize();

$.post("example.php", data);

然后你应该按照自己的意愿访问php脚本。

但是请确保您使用<input name="exampleName" />属性,然后尝试像这样访问它们......

$value = $_POST['exampleName'];

现在,看起来您正在尝试使用id代替name

答案 1 :(得分:1)

我的第一个猜测是$ _POST有一个数组,其成员是你要发送的值。

所以,我认为价值在$ _POST [1],$ _POST [2]等......

尝试print_r($ _ POST)并查看变量的去向。

回复你的评论:

我会稍微整理一下,只是一个建议 - 特别是attr('value')部分。

$('input[type=text]').each(function() {
     if ( $(this).val() ) { 
         param[$(this).attr('id')] = $(this).val();
     }            
});

答案 2 :(得分:0)

试试这个

var param = $('form').serialize();

$.post("example.php", param);