从外部应用程序对我的WordPress网站的AJAX调用

时间:2020-01-20 作者:Tayfun Akaltun

我在wordpress的网站上有一个外部web应用程序。我试图从这个外部web应用程序中调用AJAX,从我的wordpress站点/数据库中获取一些信息,但我收到了一条错误消息400。

以下是我的ajax调用代码:


        jQuery.ajax({

        type:"POST",
        url: "https://www.groupio.fr/wp-admin/admin-ajax.php",
        contentType: \'json\',
        dataType: "JSON",
        responseType:\'json\',

        data: {
            action : "itempricingfunction",
            ean : "EANTEST0101010"
        },

        success:function(data){

            alert(data);

        },

        error: function(errorThrown){
            console.log(errorThrown);
        }
        });

这是我的功能。我的wordpress网站中的php文件:

function itempricingfunction(){


$product_ean = (isset($_POST[\'ean\'])) ? htmlentities($_POST[\'ean\']) : NULL;
echo json_encode(array(\'product_ean\' =>$product_ean));


    exit;
}

add_action("wp_ajax_nopriv_itempricingfunction", "itempricingfunction");
add_action("wp_ajax_itempricingfunction", "itempricingfunction");
wordpress的响应是错误404。

你能帮我从我的网站上交流和设置/获取一些数据吗?

提前谢谢你。

1 个回复
SO网友:Jacob Peattie

您不应该以JSON的形式发送数据:

dataType: "JSON"
用于add_action("wp_ajax_nopriv_itempricingfunction" 要工作,WordPress需要找到action 您在此处正确设置的请求中的参数:

    data: {
        action : "itempricingfunction",
        ean : "EANTEST0101010"
    },
问题是它使用$_REQUEST[\'action\'], 但是PHP不填充$_REQUEST 使用JSON。它仅适用于表单数据。因此,请删除dataType 你应该会没事的:

jQuery.ajax(
    {
        type: \'POST\',
        url: \'https://www.groupio.fr/wp-admin/admin-ajax.php\',
        responseType: \'json\',
        data: {
            action: \'itempricingfunction\',
            ean: \'EANTEST0101010\'
        },
        success: function( data ) {
            alert( data );
        },
        error: function( errorThrown ) {
            console.log( errorThrown );
        }
    }
);
还有几件事需要考虑:

如果web应用位于不同的域上,您可能会遇到CORS 问题

  • Acustom REST API endpoint 更适合这种情况,并且支持以JSON的形式接收数据