Использование ajaxurl для пользовательской функции - PullRequest
0 голосов
/ 23 октября 2018

Я создаю пользовательскую форму в одном из моих постов на WordPress и отправляю ее, используя метод постов AJAX.Вот мой код:

HTML для кнопки:

<button onclick="result()" type="button" name="result_submit" id="result_submit" >Submit</button>

Jquery:

function result(){

        $.ajax({
            url  :ajaxurl,
            type :'POST',
            action :'expense',
            success: function(data){
                $("#result").html(data);
            }
        });             
}

Чтобы использовать ajaxurl, я добавил ниже php-код в разделе head:

<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>

И затем добавил ниже коды в мой файл functions.php:

add_action( 'wp_ajax_expense', 'expense_check' );
add_action( 'wp_ajax_nopriv_expense', 'expense_check' );


    function expense_check(){
    include_once 'dbConnection.php';

    $stmt = mysqli_stmt_init($conn);

    $income = "select SUM(amount) as incomeNumber FROM wp_formdata WHERE entry_type='Income'";
    $response = '';

    if (! mysqli_stmt_prepare($stmt,$income)) {
         $response = '<h1 style="color:red;padding-top:5%;">SQL Error !!</h1>';
    } else {
         mysqli_stmt_execute($stmt);
         $result = mysqli_stmt_get_result($stmt);
         $income_sum = mysqli_fetch_assoc($result); 
         $response = "Total Income is ".$income_sum['incomeNumber'];
    }

    echo $response;
    }

Но это не работает.Я получаю сообщение об ошибке ниже в консоли:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://localhost/wordpress/wp-admin/admin-ajax.php. (Reason: CORS request did not succeed).

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 23 октября 2018

Используйте приведенный ниже код в функции вашей активной темы. Php

add_filter( 'allowed_http_origins', 'add_allowed_origins' );
function add_allowed_origins( $origins ) 
{
    $origins[] = 'https://yoursite.com';
    return $origins;
}

Теперь при вызове ajax из https://yoursite.com в URL-адрес ajax вашего сайта будет иметь соответствующий заголовок Access-Control-Allow-Origin в ответе.Используйте код ниже

$.ajax({
    url: 'https://site1.example.com/wp-admin/admin-ajax.php',
    type: "POST",
    data: {
        ...
    },
    success: function(doc) {
        ...
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...