如何在上载时处理XML文件?

时间:2018-03-29 作者:D.Sc.

我需要在管理员将XML文件上传到wordpress后端后处理它。

1) 我创建了表单:

function x_show_settings_page(){
?>

<form method="post">

<table class="form-table">
    <tr valign="top">
    <th scope="row">XML-Datei hochladen</th>
    <td><input type="file" name="thirdcolor" id="xmlfile" value="" /></td>
    </tr>
</table>

<?php submit_button(\'Hochladen\'); ?>
</form>
<?php
}
2)我通过ajax将表单发送到我的函数:

add_action( \'admin_footer\', \'x_add_settings_js\' );
function x_add_settings_js() { ?>
    <script type="text/javascript" >
    jQuery(document).ready(function($) {

        var file_data = jQuery(\'#xmlfile\').val();
        var form_data = new FormData();
        form_data.append(\'xmlfile\', file_data);
        form_data.append(\'action\', \'calculate_xml\');

        $.ajax({
            url : ajaxurl,
            type: "POST",
            data : form_data,
            processData: false,
            contentType: false,
            success:function(response){
                alert(\'ok\' + response);
            },
            error: function(response){
                alert(\'no\' + response);  
            }
        });
    });
    </script> <?php
}
3)我想输出其内容:

add_action( \'wp_ajax_calculate_xml\', \'calculate_xml\' );
function calculate_xml() {

    $xmlfile = $_POST[\'xmlfile\'];
    print_r(simplexml_load_file($xmlfile));

    wp_die();
}
然而,它似乎不起作用。我的响应没有返回任何内容,除了我的测试字符串“ok”。

1 个回复
最合适的回答,由SO网友:D.Sc. 整理而成

我通过大量的测试解决了我的问题。显然,我的FormData对象不正确。对我的代码进行以下更改有效:

$(\'#xml\').on(\'submit\', function(e) {
        e.preventDefault();

        var form_data = new FormData(this);
        form_data.append(\'action\', \'calculate_xml\');

        $.ajax({
            url : ajaxurl,
            type: "POST",
            data : form_data,
            processData: false,
            cache: false,
            contentType: false,
            success:function(response){
                $(\'#response\').html(response);
            },
            error: function(response){
                $(\'#response\').text(\'error\');
            }
        });
    });

结束

相关推荐

使用WP管理员AJAX URL隐藏API密钥

目前我正在使用AJAX 请求一个简单的JSON 来自外部API的响应。问题是,API密钥已公开。我知道最好的方法是通过admin-ajax 并设置通过PHP调用url。做这件事最安全的方法是什么,如何通过PHP请求?$.ajax({ type: \"GET\", url: \"https://link.to/api/v2/link?time=day&key=(APIKEYHERE)&response_type=json\", data: dataStri