【发布时间】:2022-01-17 23:51:14
【问题描述】:
我目前在 Worpress 上使用带有 Ajax 和 PHP 的 GraphQL API。
首先,我的浏览器/帐户一切正常。但是一旦我更改我的谷歌用户或不同的浏览器或使用我的手机。我的 ajax 请求从我的 admin-ajax.php 获得 400。
老实说,我不知道问题出在哪里,我只是用 ajax 在 php 上做一个简单的请求,然后我在后面做一个 GraphQL 查询,然后我把它以 JSON 格式发回我前面。就这样。 我有 400 个错误的请求,我试图在背后做。我不知道该做什么,也不知道在哪里寻找。
这是我的 ajax 请求之一。
ajaxurl 被定义不用担心:)
$.ajax({
type: 'post',
url: ajaxurl,
data: {
'action': 'get_content_wino'
},
success: function(data){
console.log(data);
console.log("fetch ok")
},
error: function(errorThrown) {
console.log(errorThrown);
}
});
这是我的背影。
function get_content_wino()
{
if ( isset($_REQUEST) )
{
echo read_file();
die();
}
}
add_action( 'wp_ajax_get_content_wino' , 'get_content_wino' );
w/e 我的操作是我得到 400。在 admin-ajax.php 上
快速提醒,只要我拥有相同的浏览器和谷歌帐户,一切都会完美运行。我的网站没有ip白名单或者登录账号,这里纯ajax和php。
谢谢
【问题讨论】:
-
在
wp_ajax_get_content_wino动作挂钩下方添加一个额外的动作挂钩。像这样:add_action( 'wp_ajax_nopriv_get_content_wino' , 'get_content_wino' );。 Documentation -
首先这是怎么回事。其次,你非常漂亮,非常感谢队友!
-
要添加到@Ruvee 评论 - nopriv 确保可以在没有登录权限的情况下调用该操作。这可能就是为什么当您尝试进行 Ajax 调用并运行操作时它会阻止您这样做的原因。通常,对于您打算由未登录的用户运行的任何操作,您需要添加它。如果您正在构建仅在登录时运行的 ajax 函数,则不需要。
标签: php jquery ajax wordpress google-chrome