2011-08-05 30 views
2

我有一个Javascript数组,我想传递给PHP。我的数组看起来像这样。从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 

It thro有一个错误说,The Indexes of empNo and empName are not Defined。它也说0 is an undefined offset
感谢您的帮助

+1

你的问题是,无论是在Javascript或PHP,你的第一步应该是找出哪一个。使用Firebug net选项卡确定POST是否正确,然后返回或转发。 – Malvolio

回答

5

而不是通过循环和手动构建您的数据传递只是做整个形式。

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

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

然后你应该有你的PHP脚本访问。

确保您使用的<input name="exampleName" />属性,然后尝试访问他们这样......

$value = $_POST['exampleName']; 

,而现在,它看起来像你想使用id代替name

+0

我曾尝试过。生病尝试一遍。 – chris

+2

是的,我切换到序列化,它现在工作。感谢您切换到名称值提示。它正在工作。谢谢!! :-) – chris

+1

+1为正确的答案。 – Nemanja

1

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

所以,我觉得值是$ _ POST [1],$ _ POST [2],等等

尝试的print_r($ _ POST),看看你的变量去。

回应您的评论:

我就收拾东西了一下,只是一个建议 - 尤其是ATTR(“值”)的一部分。

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

当我做一个print_r($ _ POST)我得到的是数组() – chris

+1

这意味着你的帖子变量没有被设置。我将按照上面的建议使用序列化,或者使用字符串方法“param1 = value&param2 = value2”等 – Alex

0

试试这个

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

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

请注意,除非您已正确设置输入的名称,否则它将不起作用。使用名称而不是ID。 –

+0

这是解决方案。谢谢 – chris