【问题标题】:Ajax Save to server on wordpressAjax 保存到 wordpress 上的服务器
【发布时间】:2019-07-15 04:08:23
【问题描述】:

我正在尝试将 PDF 保存到 Wordpress 上的服务器,当我在表单上按提交并查看控制台时,我收到以下消息:

[弃用] 主线程上的同步 XMLHttpRequest 已弃用,因为它会对最终用户的体验产生不利影响。如需更多帮助,请查看https://xhr.spec.whatwg.org/

jquery-2.2.4.min.js:4 POST https://eazyfreight.co.uk/wp-admin/admin-ajax.php400

我的代码:

PHP:

add_action( 'wp_ajax_so56917978_upload', 'so56917978_upload' );
add_action( 'wp_ajax_nopriv_so56917978_upload', 'so56917978_upload' );
function so56917978_upload() {
    if ( ! empty( $_POST['data'] ) ) {
        $data = base64_decode($_POST['data']);
        file_put_contents( get_stylesheet_directory_uri() . '/POD/pod.pdf' , $data );
        echo "success";
    } else {
        echo "No Data Sent";
    }

    die();
}

JS

function sendToServer() { 
            html2canvas(document.getElementById("product_sheet"), {
                onrendered: function(canvas){
                    console.log("#pdfsubmit clicked");

                    var img = canvas.toDataURL("image/png");
                    var doc = new jsPDF('p', 'pt', 'a4' );
                    doc.addImage(img, 'JPEG', 20, 20);

                    var pdf = doc.output('blob');
                    $.ajax({
                        url: jspod.ajax_url,
                        type: 'post',
                        async: false,
                        contentType: false,
                        processData: false,
                        data:{
                            data: pdf,
                            action:'so56917978_upload',
                        },
                        dataType: 'json',
                    });
                }
            });
        }

任何帮助排序错误然后将文档发送到服务器将不胜感激

【问题讨论】:

    标签: php jquery ajax wordpress


    【解决方案1】:

    我不确定,但您的代码似乎没问题,我会以同样的方式完成。

    尝试更新您的 jQuery 版本,因为您使用的是非常旧的版本..

    【讨论】:

    • 感谢您的回答。我已经更新了 jQuery 版本(虽然它应该由 Wordrpress 自动包含,但由于某种原因不在此页面上)。我现在收到No Data Sent,这意味着我没有正确发送生成的 PDF。有什么你可以看到可能导致这种情况的吗?
    • 刷新后出现错误POST https://website.co.uk/wp-admin/admin-ajax.php 400
    • 在 so56917978_upload 的函数打开后放置一个 var_dump("Test") 来测试现在是否有效。您应该在网络下的 Chrome 开发工具中看到输出 - >admin-ajax
    • 没什么,因为它甚至没有进入 PHP 代码。在 wordpress 中,它需要通过 admin-ajax.php,然后路由到我的 so56917978_upload 函数所在的 functions.php,但在那里路由似乎存在问题
    • 您的代码在我看来很好。试试 console.log(jspod.ajax_url);在你的 js 里面。或者甚至尝试将“admin-ajax.php”硬编码
    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 2018-10-15
    • 2013-04-30
    • 2020-08-04
    • 2016-10-23
    • 2013-05-05
    • 2016-04-30
    • 1970-01-01
    相关资源
    最近更新 更多