html5中的transaction怎样使用回调函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html5中的transaction怎样使用回调函数相关的知识,希望对你有一定的参考价值。
参考技术A 在html5中的,我们知道使用数据库对象,首先是创建一个数据库对象,其次是通过transaction调用回调函数来执行数据库操作语言,现在我们来具体看看是怎么使用transaction函数的。var db=openDatabase(‘mytestdb’,”1.0″,”this is a test”,”3.*1024*1014″);
db.transation(
function (tx)
tx.execute(sqlQuery,[],dataHandler,errorHandler);
);
在executeSql中,有四个参数:
第一个参数很简单,就是需要执行的sql的sql语句。
第二个参数是一个数据,里面存放的就是在参数1sql语句中使用”?”的地方的具体值。
transaction.executeSql(“UPDATE student set stuName =? where stuNo=?;
“,["yugaga",20091120130]);//更新学好是20091120130的姓名为yugaga
第三个是执行成功之后回调函数,使用:function dataHandler(transaction,result);
第四个是执行失败之后的回调函数。 使用function errorHandler(transaction,errormsg);
这些和java操作数据库的方式是差不多的,只是它直接将执行结果和错误信息放在一个回调函数中。本回答被提问者和网友采纳
使用 WordPress 发布元数据函数的 HTML 表单中的关联数组
【中文标题】使用 WordPress 发布元数据函数的 HTML 表单中的关联数组【英文标题】:Associative arrays in HTML forms using WordPress post meta data functions 【发布时间】:2016-12-08 14:55:09 【问题描述】:我有一组需要在自定义帖子类型的 wp_postmeta 表中保存/检索的对象。
示例结构:
array(
array(
'firstname' => 'Johnny',
'middlename' => 'William'
),
array(
'firstname' => 'Jane',
'middlename' => 'Alice'
)
)
我希望能够像这样遍历对象:
$children = get_post_meta( $postid, '_children', true);
$arrlength = count($children);
for($x = 0; $x < $arrlength; $x++)
echo '<input type="text" name="_children[][firstname]" id="_children[][firstname]" value="' . $meta_values['_children'][0][$x][firstname] . '" /><br />';
echo '<input type="text" name="_children[][middlename]" id="_children[][middlename]" value="' . $meta_values['children'][0][$x][middlename] . '" /><br />';
我不认为以上是正确的。我正在尝试将发布的数据保存在save_post
操作中:
function test_meta_save( $post_id )
// Checks save status
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = ( isset( $_POST[ '_children_nonce' ] ) && wp_verify_nonce( $_POST[ '_children_nonce' ], basename( __FILE__ ) ) ) ? 'true' : 'false';
// Exits script depending on save status
if ( $is_autosave || $is_revision || !$is_valid_nonce )
return;
if( isset( $_POST[ '_children' ] ) )
update_post_meta( $post_id, '_children', array_map( 'sanitize_text_field', $_POST[ '_children' ] );
add_action( 'save_post', 'test_meta_save' );
我知道上述也不正确。
【问题讨论】:
请尝试$meta_values['_children'][$x][firstname]
只需删除[0]
!
@IsmailRBOUH 我想知道 [0]。数据库显示该值为 NULL,所以我认为我发布的 post_save
代码行存在问题。
$_POST[ '_children' ]
是一个数组吗?你如何输入初始值!
是的,要在for
循环中输出表单,您必须在数据库中有一些值!我有什么问题吗?
是的!我认为您保存post_meta
的代码是正确的!但是在您的表单中,您需要将name="_children[][firstname]"
更改为name="_children['. $x.'][firstname]"
和name="_children[][middlename]"
更改为name="_children['.$x.'][middlename]"
以将middlename
和firstname
保存在同一个数组中!
【参考方案1】:
在这里,您遇到与上一个问题相同的问题,但这次是
get_post_meta()
,其中最后一个参数应该是false
。因为您正在阅读/创建arrays
值和NOTstrings
值。
在您的代码中:
$children = get_post_meta( $postid, '_children', true);
您需要删除 get_post_meta()
函数中的最后一个参数,因为默认值为 false
。
相反,您将拥有:
$children = get_post_meta( $postid, '_children');
$arrlength = count($children);
for($x = 0; $x < $arrlength; $x++)
echo '<input type="text" name="_children[][firstname]" id="_children[][firstname]" value="' . $meta_values['_children'][0][$x][firstname] . '" /><br />';
echo '<input type="text" name="_children[][middlename]" id="_children[][middlename]" value="' . $meta_values['children'][0][$x][middlename] . '" /><br />';
参考资料:
WordPress Code Reference - add_post_meta WordPress Code Reference - update_post_meta WordPress Code Reference - get_post_meta【讨论】:
我在您的for
循环中看到您指定了一个额外的维度。您引用的 [0]
维度是将 get_post_meta() 最后一个参数设置为 false 的效果?感谢您的解释和参考。以上是关于html5中的transaction怎样使用回调函数的主要内容,如果未能解决你的问题,请参考以下文章
HTML5 File API:在 FileReader 回调中获取 File 对象
实体退出@Transactional上下文时的Spring回调?
sequelize.transaction() 可以将异步函数作为回调吗?
HTML5 new Image() 图像需要加载后才能drawImage? 怎样保证多个Image对象都加载完成?
设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名