【问题标题】:$_POST of ajax appended inputs field always returns empty valueajax 追加输入字段的 $_POST 总是返回空值
【发布时间】:2016-05-31 19:56:12
【问题描述】:

我使用 ajax 方法从页面 users.php 获取数据,并且该页面的结果设置为父页面 list-users.php 中的 div 内的 html

users.php 返回如下 html

<table width="100%" border="0">
  <tr>
    <td>John<input name="user_id[]" type="hidden" value="1" /></td>
  </tr>
  <tr>
    <td>Sam<input name="user_id[]" type="hidden" value="2" /></td>
  </tr>
</table>

list-users.php 中使用$("#userlists").html(); 将这些值放入一个 div

<form method="post">
<div id="userlists">
<table width="100%" border="0">
  <tr>
    <td>John<input name="user_id[]" type="hidden" value="1" /></td>
  </tr>
  <tr>
    <td>Sam<input name="user_id[]" type="hidden" value="2" /></td>
  </tr>
</table>
</div>
<input type="submit" name="submit_users" value="Save" />
</form>

当我提交表单时,user_id[] 总是返回空。我不知道错误是什么。提交表单时是否可以获取user_id[]的值?

<?php
if(isset($_POST['submit_users']))
{
 print_r($_POST['user_id']);
//this returns empty data always
}
?>

var value='{"slno":"'+number+'","empcode":"'+code+'"}';
    jQuery.ajax({       
        type: 'POST',
        url: 'inc/users.php',
        data: 'values='+value,
        cache: false,
        success: function(html){
            if(html)
            {               
                $("#userlists").html(html);
            }
            else
            {
                $("#userlists").html("Error Occured.");
            }
        }
    });

【问题讨论】:

  • 分享php代码。还有 ajax 代码。
  • 您如何处理提交?通过 ajax 或者您正在读取 $_POST 数组?
  • 分享完整代码,即:Ajax 和 Php 代码
  • 如何在没有提交按钮的情况下提交表单?
  • 您的用户列表是可见的吗?如果没有,请阅读:stackoverflow.com/questions/8318428/…

标签: php jquery html ajax


【解决方案1】:

试试这个 ajax 请求。

var value='{"slno":"'+number+'","empcode":"'+code+'"}';
    jQuery.ajax({       
        type: 'POST',
        url: 'inc/users.php',
        cache: false,
        data: { "values" : value },
        dataType: "html"
        success: function(html){
            if(html)
            {               
                $("#userlists").html(html);
            }
            else
            {
                $("#userlists").html("Error Occured.");
            }
        }
    });

你的ajax响应是html,所以需要加上dataType: "html"

也像这样把所有的html放在一行中。

<table width="100%" border="0"><tr><td>John<input name="user_id[]" type="hidden" value="1" /></td></tr><tr><td>Sam<input name="user_id[]" type="hidden" value="2" /></td></tr></table>

并在表单标签中提及 Action。可能这就是问题所在。

【讨论】:

  • ajax请求不是他的问题。 '$_POST['user_id']' 在 ajax 请求开始前为空
【解决方案2】:

我认为您没有将 user_id[] 视为多维数组。当您阅读帖子时,您错过了关键。当我尝试这个时它会起作用:

$user_ids = $_POST['user_id'];

foreach( $user_ids as $key => $n ) {
  echo "The user_id is ".$n.".PHP_EOL;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 2016-07-11
    • 1970-01-01
    相关资源
    最近更新 更多