![](/img/trans.png)
[英]jQuery cross-domain AJAX request works on one page, but not another
[英]Handle cross-domain AJAX POST request in WordPress plugin
我有下一種情況:
插件-這是我的產品。
AJAX客戶端-另一個用戶,他們將使用我的“計算器”。
所以問題:
此方法不安全。 您應該使用WP rest API來接受跨域請求。 另外,您應該添加WP rest API隨附的auth 1.0。 這是一個鏈接,向您展示如何將自己的端點添加到其余api https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/
這里的鏈接顯示了如何使用auth 1.0進行身份驗證來保護api。 https://wordpress.org/plugins/rest-api-oauth1/
希望這可以幫助
您需要在PHP中創建一個函數以對服務器進行API調用,並將其添加到wp_ajax和wp_ajax_nopriv掛鈎中。
add_action( 'wp_ajax_your_ajax_function', 'your_ajax_function' );
add_action( 'wp_ajax_nopriv_your_ajax_function', 'your_ajax_function' );
function your_ajax_function() {
$url = 'http://www.google.com'; // url to your rest API
if ( isset( $_POST['data'] ) ) {
$response = wp_remote_post( $url, array( 'data' => $_POST['data'] ) );
if ( is_wp_error( $response ) ) {
echo $response->get_error_message();
exit;
}
else {
wp_send_json( $response );
}
}
}
為了確保您有權訪問正確的Ajax路徑,請本地化Ajax的路徑以在javascript中使用 :
add_action( 'wp_enqueue_scripts', 'localize_ajax' );
function localize_ajax() {
wp_localize_script( 'jquery', 'ajaxurl', admin_url( 'admin-ajax.php' ) );
}
注意:將jquery
更改為您的javascript文件和/或確保一旦jquery
進入頁面后就創建函數。
接下來,在javascript中創建函數,該函數調用ajax函數,在data
字段中傳遞用戶值,並將其附加到某個事件偵聽器:
function yourFunction() {
jQuery.ajax( {
method: 'POST',
url: ajaxurl,
data: {
'action' : 'your_ajax_function',
'data' : 'test'
},
success: function( response ) {
// do what you want with your response
console.log( response );
}
});
}
這將返回您的API調用的響應,因此請使用response
在DOM中填充結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.