
pengembangan plugin – respons getJSON ke PHP
Saya sedang mengerjakan proyek di mana saya harus memanggil API pihak ke-3 dari sisi klien kemudian memproses respons dalam PHP sebelum menampilkannya di bagian depan. Jadi saya merencanakannya di kepala saya seperti ini:
- gunakan getJSON untuk memanggil API pihak ke-3
- kirim respons ke PHP melalui AJAX
- memasukkannya ke dalam variabel dan menggunakannya
Sayangnya saya tidak tahu bagaimana menempatkan respons dalam variabel php dan menggunakannya dalam fungsi kode pendek saya. Saya bukan pengembang PRO, tetapi dalam dua hari terakhir saya telah membaca apa pun yang berhubungan dengan situasi ini, jadi inilah kode saya saat ini:
Url API eksternal mendukung params dan saya membangunnya tergantung apa yang saya butuhkan di halaman tertentu, menggunakan kode pendek. Jadi perjalanan dimulai dalam fungsi callback add_shortcode :
$url = theAPIurl //with parameters
$apinonce = wp_create_nonce('apinonce');
wp_add_inline_script('ajax-request', 'const apidata=".json_encode( array( "apiUrl' => $url , 'ajaxUrl' => admin_url( 'admin-ajax.php' ) , 'nonce' => $apinonce )) , 'before');
Skrip enqueued:
wp_register_script('ajax-request' , 'pathtomyjs' , array('jquery'), false, true);
wp_enqueue_script('ajax-request');
File JS saya
$.getJSON(apidata.apiUrl , function(response_data){
$.ajax({
type: 'POST',
url: apidata.ajaxUrl,
data: {nonce: apidata.apinonce, action:'api_response', data:JSON.stringify(response_data) },
dataType:"json"
});
return false;
})
Kait tindakan AJAX
add_action('wp_ajax_api_response' , 'kwpca_api_callback' );
add_action('wp_ajax_nopriv_api_response' , 'kwpca_api_callback' );
Fungsi panggilan balik AJAX
function kwpca_api_callback() {
check_ajax_referer('apinonce' , 'nonce');
$response = json_decode(stripslashes($_POST["data"]), true);
$data = wp_send_json($response);
}
Mencari di alat dev browser-> jaringan, saya dapat melihat permintaan getJSON dan admin-ajax berhasil, datanya adalah yang saya butuhkan, tetapi saya tidak tahu cara meneruskannya ke fungsi kode pendek saya.
Jika saya memanggil fungsi secara langsung seperti $newdata = kwpca_api_callback()
dan var_dump($newdata)
, hasilnya adalah -1 dan tidak ada panggilan ajax yang dijalankan di tab jaringan. Pada titik ini saya tidak tahu apa yang harus dilakukan selanjutnya dan saya kehilangan hitungan berapa kali saya mengembalikan kode mencoba solusi yang mungkin. Bantuan apa pun sangat dihargai