首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Ajax在wordpress管理中使用FPDF生成PDF

使用Ajax在wordpress管理中使用FPDF生成PDF
EN

Stack Overflow用户
提问于 2019-01-11 00:31:44
回答 1查看 2.2K关注 0票数 0

我正在尝试使用posts.php插件在Wordpress的FPDF管理屏幕中生成一个PDF。我想将页面id从按钮传递到我调用的函数中,这样我就只生成包含与该页面相关的数据的PDF。

单击该按钮时,它只会刷新页面。

有谁能帮帮忙吗?

JAVASCRIPT

代码语言:javascript
运行
复制
function ajaxAddVehicleMeta() {

        var postid = jQuery('button[name="generate_posts_pdf"]').attr('id'); // select id of input change to whatever it actually is

        jQuery.ajax({
           type: 'POST',
                data: {
                    action: 'saveVeh',
                    postid: postid
                    },
                success: function(){

               },
           error: function(){

           }

        });
    }

PHP

代码语言:javascript
运行
复制
$pdf = new PDF_HTML();

function my_enqueue($hook) {
    // Only add to the edit.php admin page.
    // See WP docs.
    if ('post.php' !== $hook) {
        return;
    }
    wp_enqueue_script('my_custom_script', plugin_dir_url(__FILE__) . 'js/main.js');
}

add_action('admin_enqueue_scripts', 'my_enqueue');

add_action( 'wp_ajax_saveVeh', 'saveVeh' );
add_action( 'wp_ajax_nopriv_saveVeh', 'saveVeh' );

function saveVeh() {

      $postid = 72;

        global $wpdb;

          if ( $wpdb->get_var( $wpdb->prepare( 'SELECT lottery_id FROM ' . $wpdb->prefix . 'wc_lottery_log WHERE lottery_id= %d', 72 ) ) ) {

          $log = $wpdb->get_results( $wpdb->prepare( 'SELECT * FROM ' . $wpdb->prefix . 'wc_lottery_log WHERE lottery_id=%d', 72 ) );

          global $pdf;
          $title_line_height = 10;
          $content_line_height = 8;
          $pdf->AddPage();
          $pdf->SetFont( 'Arial', '', 42 );
          $pdf->Write(20, 'Atomic Smash FPDF Tutorial');

          foreach( $log as $row ) {
              $pdf->SetFont( 'Arial', '', 22 );
              $pdf->Write($title_line_height, 'Test');
              // Add a line break
              $pdf->Ln(15);
              // Post Content
              $pdf->Ln(10);
              $pdf->SetFont( 'Arial', '', 12 );
              $pdf->WriteHTML($row->ticketid);
            }
        }
        header("Content-type:application/pdf");
        $pdf->Output('I','requerimiento_pdf.pdf');
        exit;

}

HTML

代码语言:javascript
运行
复制
<button onclick="ajaxAddVehicleMeta()" id="<?php echo $post->ID; ?>" class="button button-primary" type="submit" name="generate_posts_pdf" value="generate">Generate PDF from Competiion Entries</button>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-12 00:25:56

你的按钮在表单里面吗?如果是这样的话,您需要使用preventDefault(),这样它就不会执行其默认操作(即刷新)。

HTML

代码语言:javascript
运行
复制
<button onclick="ajaxAddVehicleMeta(event)" id="<?php echo $post->ID; ?>" class="button button-primary" type="submit" name="generate_posts_pdf" value="generate">Generate PDF from Competiion Entries</button>

JS

代码语言:javascript
运行
复制
  function ajaxAddVehicleMeta(e) {
            e.preventDefault();
            var postid = jQuery('button[name="generate_posts_pdf"]').attr('id'); // select id of input change to whatever it actually is

            jQuery.ajax({
                type: 'POST',
                        data: {
                            action: 'saveVeh',
                            postid: postid
                            },
                        success: function(){

                    },
                error: function(){

                }

                });
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54133067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档