【问题标题】:ajaxurl usage for a custom function自定义函数的 ajaxurl 用法
【发布时间】:2018-10-23 04:18:14
【问题描述】:

我正在我的一篇 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,我在 head 部分的 php 代码下面添加了:

<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).

我该如何解决这个问题?

【问题讨论】:

  • 您尝试从哪个页面发起调用?

标签: php ajax wordpress custom-wordpress-pages


【解决方案1】:

在活动主题的 function.php 中使用以下代码

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

现在从 https://yoursite.com 到您网站的 ajax url 的 ajax 调用将在响应中包含适当的 Access-Control-Allow-Origin 标头。使用下面的代码

$.ajax({
    url: 'https://site1.example.com/wp-admin/admin-ajax.php',
    type: "POST",
    data: {
        ...
    },
    success: function(doc) {
        ...
    }
});

【讨论】:

  • 谢谢。它现在在 chrome 上工作,但 firefox 仍然显示相同的错误。清除了缓存和 cookie,没有运气。知道为什么它在 FF 中不起作用?
  • 如果效果好,请点赞并标记为有用,以便对他人有所帮助
  • 我还在检查火狐
  • 在您的 ajax 调用中添加这一行:Access-Control-Allow-Origin: https://yoursite.com
猜你喜欢
  • 1970-01-01
  • 2015-06-25
  • 2018-08-16
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
相关资源
最近更新 更多