无法通过 Jquery.post 发送数组

Posted

技术标签:

【中文标题】无法通过 Jquery.post 发送数组【英文标题】:Unable to send array through Jquery.post 【发布时间】:2015-12-02 00:14:42 【问题描述】:

所以,我有一个输入值数组:

<input type="text" placeholder="write your Question" id="question[]"  value="" />

我正在通过此代码发送此输入:

    $.post("function.php",Question:$("#question").serialize(),function(data)
        $("#construct").append(data);
        alert('done');
    );

但是当我尝试在我的 PHP 中使用这些值时,我遇到了一些错误。

PHP(function.php):

$Question=htmlentities($_POST['Question'],ENT_QUOTES,"UTF-8");
//line 13
$Quiz->InsertQuestion($Q_id,$Question[0]);
//line 14
$Quiz->InsertQuestion($Q_id,$Question[1]);

错误提示:

注意:未初始化的字符串偏移量:第 13 行的 E:\program file\program\xampp\htdocs\QMS\admin\function.php 中为 0

注意:未初始化的字符串偏移量:E:\progrram file\program\xampp\htdocs\QMS\admin\function.php 第 14 行中的 1

提前致谢。

【问题讨论】:

var_dump($_POST['Question']); 顺便说一句,question[]question不同的 ID。 @u_mulder 我使用了var_dump,我得到了:string(0) "" .btw 我想当我想发送一个数组时,我应该使用question[] 你能发布你所有的html吗? 【参考方案1】:

正如我所说,id="question[]"id="question" 是不同的 ID。 如果您想将项目作为数组发送,您应该使用name 属性和[]

<input type="text" placeholder="write your Question" name="question[]"  value="" />
<input type="text" placeholder="write your Question" name="question[]"  value="" />

jquery:

// select all fields which names start with "question"
Question:$("[name^='question']").serialize() 

甚至class:

<input type="text" placeholder="write your Question" value="" class="question" />
<input type="text" placeholder="write your Question" value="" class="question" />

jquery:

Question:$(".question").serialize()

【讨论】:

当我使用.serialize() 时似乎无法获得完整的值【参考方案2】:

将输入的 id 从“question[]”更改为“question”。

【讨论】:

如果他想通过一系列问题,为什么要改变这一点? 因为它是一个DOM内容的id。 @Ahmadbaba46 我做到了,但仍然失败:-(

以上是关于无法通过 Jquery.post 发送数组的主要内容,如果未能解决你的问题,请参考以下文章

对象数组的 jQuery POST 到节点

通过 jQuery / PHP 发送电子邮件

Django:重构通过 $.post 发送的结构化参数

jQuery POST 通过 CORS 到 web 服务

jquery $.post()返回数据

jQuery POST 不在 IE10 上发送 Content-Type