php - 多个ajax请求,只有一个插入数据库?

标签 php jquery ajax

我有基于用户创建的行。当您单击“添加新行”时,会克隆并附加一些内容。

每个克隆的内容都有自己的文本区域,每行都有一个行键。

<input type="hidden" name="rowkey" value="0">

我使用 jQuery 重写 rowkey 值以匹配创建的 .each() 行。

ajax 帖子的最终结果是每行都有一个新的 ajax 请求。 ajax 帖子看起来像这样

rowkey: 0
application[rows][0][elements][html]: Some HTML here

另一个新行的 ajax 请求

rowkey: 1
application[rows][1][elements][html]: Some More HTML here

如果创建了另一行,则另一行

rowkey: 2
application[rows][2][elements][html]: Some More More HTML here

我以前用过这个方法,但现在在 wordpress 中使用 update_post_meta 工作,它只使用最后一个 ajax 请求更新 wp_postmeta 表,在本例中是 rowkey: 2 如上所述。通常我可以将其放入数组中。

这是update_post_meta

$application['rows'][$_POST['rowkey']] = $_POST['application']['rows'][$_POST['rowkey']];

$application = esc_sql(json_encode($application));

    // Update the post's meta field
    update_post_meta($post_id, 'MY_DATABASE', $application);

注意:这是一个函数内部,$post_id用作参数,没有问题,只是将所有ajax post值放入数据库,而不是最后一个。只是把它扔在那里,我记得使用 ARRAY_A 不确定这是否与这里相关。

meta_value 数据库表看起来像这样

"rows":{"1":{"elements":{"html":"2"}}}

当它应该是这样的时候:不太确定这是否 100% 准确,但看起来应该类似

"rows":{"1":{"elements":{"html":"1"}}, {"2":{"elements":{"html":"2"}}, {"3":{"elements":{"html":"3"}} }

最后一句话:我希望这足够清楚,而且不要太长。我真的需要帮助。我非常乐意提供更多信息,我真的很想弄清楚这一点。您需要任何信息只需询问。

最佳答案

据我理解你的问题,我认为$application['rows'][$_POST['rowkey']] = $_POST['application']['rows'][$_POST['rowkey' ]]; 是错误的。

$_POST['rowkey']是数字时$application['rows'][$_POST['rowkey']]将设置为以下值一行而不是一组行。

示例:

<?php
$application = array();
$application['rows']=array();
for ($i=0; $i<10; $i++)
{
    $application['rows'][$i]=(object)array('elements',(object)array('html'=>($i+1)));
}   

//var_dump($application);
var_dump(json_encode($application['rows'][3])); // your result
var_dump(json_encode((object)$application['rows'])); //expected result

所以在你的代码中$application['rows'][$_POST['rowkey']] = $_POST['application']['rows'][$_POST['rowkey']]; 类似于 $application['rows'] = $_POST['application']['rows'];

注意meta_value期望一个独占包含对象且不接受数组的json对象时,您必须将每个数组从$_POST转换为对象。您也可以使用选项 JSON_FORCE_OBJECT (对于 php>=5.3.0)。对象用 {} 包围,数组用 [] 包围。

关于php - 多个ajax请求,只有一个插入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18943791/

相关文章:

javascript - 单击时更改 setTimeout 的持续时间

javascript - 禁用滚动事件监听器一段时间

php - Laravel 5 条件路由和多个 Controller

php - 将正负存储在变量PHP中

php - Zend框架加入

javascript - 异步显示表单元素

asp.net - 如何在 mvc .net Web 应用程序中从 jquery(在自定义 View 页面中)调用 Controller 后操作

php - MySQL:忽略行之间差异大于 x 的结果

javascript - 为什么我的代码不使用 jquery 更改光标?

Java HttpServlet请求 : Wait with repsonse