TL : DR : 중복 없음 - 먼저 코드를 아래로 스크롤하여 문제를 찾습니다.WordPress AJAX 요청은 0을 반환합니다.
여기에 the link to the demo that I currently have입니다. functions.php
에서
내가 처음 내 스크립트를 로컬 라이즈 : 내 아약스는 I에 호출하는 스크립트에 대한
function ajaxurl(){
wp_enqueue_script('product-selector', get_template_directory_uri() . '/js/ajax.js', array('jquery'));
wp_localize_script('product-selector', 'MyAjax', array(
// URL to wp-admin/admin-ajax.php to process the request
'ajaxurl' => admin_url('admin-ajax.php'),
// generate a nonce with a unique ID "myajax-post-comment-nonce"
// so that you can check it later when an AJAX request is sent
//'postCommentNonce' => wp_create_nonce('myajax-post-comment-nonce'),
)
);
}
add_action('wp_head', 'ajaxurl');
그리고이 있습니다은 ajax.js에 대한 마지막
function ajax_callback() {
global $wpdb; // this is how you get access to the database
// Declare our variable.
$cat = $_POST['cat'];
// Q the DB
$query = $wpdb->get_col($wpdb->prepare(
"
SELECT meta_value
FROM $wpdb->postmeta
WHERE post_category=%s
", $cat
));
header('Content-Type: application/json');
wp_send_json(json_encode($query));
}
add_action('wp_ajax_nopriv_ajax-callback', 'ajax_callback');
과 내가 가진 :
$(document).ready(function(){
var back_end_script_url = MyAjax.ajaxurl;
$(function() {
var category_callback = function(data) {
console.log(data);
var adhesion_select = $('#adhesion');
var substrate_select = $('#substrate');
substrate_select.find('option').remove();
adhesion_select.find('option').remove();
for (var k in data) {
var option = $('<option />').val(k).html(data[k]);
adhesion_select.append(option);
}
};
var adhesion_callback = function(data) {
console.log(data);
var substrate_select = $('#substrate');
substrate_select.find('option').remove();
for (var k in data) {
var option = $('<option />').val(k).html(data[k]);
substrate_select.append(option);
}
};
var category_change = function() {
console.log('Category Changed');
var category = $(this).find(":selected").val();
var params = {
action: 'ajax-callback',
cat: category
};
console.log(params);
$.post(back_end_script_url, params, category_callback);
};
var adhesion_change = function() {
console.log('Adhesion Changed');
var adhesion = $(this).find(":selected").val();
var category = $('#cat').find(":selected").val();
var params = {
action: 'ajax-callback',
cat: category,
adhesion: adhesion
};
console.log(params);
$.post(back_end_script_url, params, adhesion_callback);
};
$('#cat').on('change', category_change);
$('#adhesion').on('change', adhesion_change);
});
});
내 문제는 데모를 보면 아약스가 숫자 0 만 반환한다는 것입니다. DB의 데이터.
스택 및 워드 프레스 교환에서이 문제와 관련된 모든 질문을 읽었으며 모두 시도했지만 결과는 항상 같습니다.
나는 JS 코드를 고용했지만 그 사람은 나의 말에 맹세했다. 그게 사실인지 아닌지는 잘 모르겠다. 코드에서 문제를 찾을 수 없기 때문이다.
도움을 주셔서 감사합니다. 스택!
요구가 잘 작동하지만, PHP는 내 문제는'행동했다 : ajax-callback' –