所以在 Wordpress 中,我有一个 ajax 动作的钩子,看起来像这样:
add_action( 'wp_ajax_myhook', __NAMESPACE__ .'\myhook' );
function myhook() {
$username = "webmaster@example.com";
$password = "password!";
$url = "http://00.00.000.1:8080/api/v1/generalsite";
$options = array('http' =>
array(
'method'=>"GET",
'header' =>
"Authorization: Basic " . base64_encode("$username:$password") . "\r\n" .
"Content-type: application/json\r\n" .
"Accept: application/json"
)
);
$context = stream_context_create($options);
$file = file_get_contents($url, false, $context);
$dataToShow = (array) json_decode($file);
wp_send_json($dataToShow);
}
从在浏览器端运行的一个单独的 Javascript 文件中,我有一个对 admin-ajax 的 jquery ajax 调用,它调用了这个函数。这个函数看起来像:
async function getmydata(){
var data = {
'action': 'myhook',
'datatosend': JSON.stringify(someJSON)
}
const datapulleddown = $.ajax({
url: wp.ajax.settings.url,
type: "POST",
data: data ,
dataType: 'json',
success: function (response, status) {
console.log(`status is ${status}`);
console.log(`data is ${data}`);
thedataIwant = response;
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(`jqXHR is ${jqXHR}, textStatus is ${textStatus}, errorThrown is ${errorThrown}`);
console.log(data);
}
});
return datapulleddown;
}
这会从带有身份验证的 URL 中获取一个 json。但是,我希望能够在第二个浏览器端 ajax 调用中再次调用该钩子,但使用参数以便从 http(colon)//00(dot)00(dot)000(dot)1(冒号)8080/api/v1/generalsite/NEWPARAM。我对 PHP 相当缺乏经验,但我知道在 PHP 中我可以将标准函数传递给默认参数。我将如何编写一个新的 JS ajax 调用来提供 URL NEWPARAM,并更改 PHP 函数,以便我可以将它传递给这个新的 ajax 调用,NEWPARAM 是 myhook 的参数?