Ajax URL路径未定义,如何在Ajax URL中获取wordpress文件路径?

时间:2019-06-03 10:47:19

标签: php jquery ajax wordpress

在wordpress中的ajax URL路径上出现错误。它在localhost上运行,但是在服务器上不运行。我的upload-file.php位于 domainname.com/wp-content/themes/mytheme/upload-file.php 中,如何定义jquery ajax的URL路径?请帮助我解决问题。

这是我的代码示例:

$.ajax({
     url:'upload-file.php',
     method:"POST",
     data: form_data,
     contentType: false,
     cache: false,
     processData: false,

1 个答案:

答案 0 :(得分:1)

将wp_localize_script用于wordpress中的ajax。 WordPress admin-ajax.php文件的URL,用于发送数据以进行处理。

//add in function.php
function ajax_script() {
    wp_enqueue_script( 'ajax_operation_script', get_template_directory_uri() . '/js/script.js', array('jquery'), '1.0.0', true );
    wp_localize_script( 'ajax_operation_script', 'myAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php', 'relataive' )));  
    wp_enqueue_script( 'ajax_operation_script' );
}
add_action( 'wp_enqueue_scripts', 'ajax_script' );

称为wp_ajax_的Ajax操作钩。您需要将自定义函数挂接到其中,该函数将在Ajax调用期间执行。

//add in function.php
add_action('wp_ajax_upload_file', 'upload_file');
add_action('wp_ajax_nopriv_upload_file', 'upload_file');

function upload_file(){
    parse_str($_POST['form_data'], $my_array_of_vars);
    print_r($my_array_of_vars);
    die;
}

Ajax代码。

$.ajax({
    url: myAjax.ajaxurl,
    method:"POST",
    data : {action: 'upload_file',
    form_data:form_data 
    },
    contentType: false,
    cache: false,
    processData: false