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]" 以将middlenamefirstname 保存在同一个数组中! 【参考方案1】:

在这里,您遇到与上一个问题相同的问题,但这次是get_post_meta(),其中最后一个参数应该是false。因为您正在阅读/创建 arrays 值和NOT strings 值。

在您的代码中:

$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对象都加载完成?

boost实现回调调函

设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名