【问题标题】:jquery array push to php foreachjquery数组推送到php foreach
【发布时间】:2014-11-17 20:24:36
【问题描述】:

我在 php 中遇到了这个错误:

Invalid argument supplied for foreach()

我想在 jquery 中为输入值创建一个数组

<input type="text" class="passenger">
<input type="text" class="passenger">
<input type="text" class="passenger">

那么js就是:

var passengers = new Array();

$('.passenger').each(function(){
    if($(this).val() == " "){
        passengers.push(JSON.stringify($(this).val()));
    }
});

然后在我将它发布到 php 之后,我想要它,所以我显示所有乘客

目前,这不起作用。为什么不

foreach($passengers as $pass){
    $each_passengers = json_decode($pass);
}

【问题讨论】:

  • $passengers 不是数组而是字符串。您正在执行 .stringify 将 json 数据转换为字符串。
  • 您可以在数据发送前使用passengers.push($(this).val());var data = JSON.stringify(passengers),然后在PHP 中使用$passengers = json_decode($data)
  • if($(this).val() == " "){ 只会添加空值

标签: php jquery html arrays


【解决方案1】:

实际上,您不需要对每个输入进行字符串化。您首先需要做的是在表单输入中创建一个分组名称属性:

<input type="text" name="input[]" class="passenger" value="test1" />
<input type="text" name="input[]" class="passenger" value="test2" />
<input type="text" name="input[]" class="passenger" value="test3" />

然后,在您的$.post() 中。只需使用$(form).serialize() 将它们作为序列化输入:

$.post('myphp_process.php', $('#form_values').serialize(), function(response){

那么当然是PHP来处理它,只要把它当作普通的POST:

$inputs = $_POST['input']; // this will return an array of inputs and to access this you need a loop.

// for clarity print_r($_POST['input']);

Check this out.这应该会给你基本的想法。

【讨论】:

    猜你喜欢
    • 2019-02-23
    • 2017-09-16
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多