2013-10-14 4 views
11

Я установил основной пример ajax для wordpress в моей теме wp. Триггер выполняется с помощью modernizr.js, проверяющего медиа-запросы на странице.Почему мой запрос ajax получает ответ 0?

jQuery(document).ready(function($) { 
    if(Modernizr.mq('only all and (max-width:6300px)')) { 
     var data = { 
     action: 'my_action', 
     whatever: ajax_object.we_value  // We pass php values differently! 
    }; 
    // We can also pass the url value separately from ajaxurl for front end AJAX implementations 
     jQuery.post(ajax_object.ajax_url, data, function(data) { 
      $("#trending-Container").html(data).fadeIn(1000); 
     }); 
    } 

});//end function 

У меня есть локализованные и enqueue'd мои скрипты.

wp_enqueue_script('mainJS', get_template_directory_uri() . '/js/mainJS.js', array("jquery")); 
wp_localize_script('mainJS', 'ajax_object', 
        array('ajax_url' => admin_url('admin-ajax.php'), 'we_value' => 1234)); 

и, наконец, функция, которая обрабатывает запрос является:

add_action('wp_ajax_my_action', 'my_action_callback'); 
add_action('wp_ajax_nopriv_my_action', 'my_action_callback'); 
function my_action_callback() { 
     global $wpdb; 
      $whatever = intval($_POST['whatever']); 
      $whatever += 10; 
       echo $whatever; 
      die(); 

     } 

Это постоянно дает мне ответ от 0 (без свойств), и я не знаю, почему. P.S Это все локально.

Status code 200 
Host:lart.co.uk 
Origin:http://lart.co.uk 
Referer:http://lart.co.uk/ 
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36 
X-Requested-With:XMLHttpRequest 
Form Dataview sourceview URL encoded 
action:my_action 
whatever:1234 
+0

Можете ли вы проверить 'exit (intval ($ _POST ['whatever']));'? –

+0

@ RecoveringSince2003 Вы имеете в виду вместо die()? Я пробовал и все еще ничего. – UzumakiDev

+0

Попробуйте 'print_r ($ _ POST); die();' чтобы убедиться, что '$ _POST' не пуст, содержит значение. –

ответ

27

Все должно соответствовать здесь:

PHP

 
add_action('wp_ajax_my_action',  'my_action'); 
add_action('wp_ajax_nopriv_my_action', 'my_action'); 

function my_action() {} 

JS

 
var data = { 
    action: 'my_action', 
    whatever: ajax_object.we_value 
}; 

Кроме того, вы недостающие проверки безопасности и лучшую обработку ответа.
Проверьте следующие примеры: [ 1 ] и [ 2 ].

+0

Еще ничего. Я не думал, что другое «my_action» должно совпадать и может быть просто именем функции? – UzumakiDev

+1

Пример №2 довольно прост, вы пытались его адаптировать? – brasofilo

+0

ах, спасибо. После просмотра примера 2 я смог адаптировать код и получить его для корректного вывода. В любом случае спасибо :) – UzumakiDev

1

Вот полный пример, чтобы решить эту проблему:

JavaScript:

$(document).ready(function() { 
    $("#submit").click(function(e) { 
     var demo = 'demo'; 
     var ajaxurl = '<?php echo admin_url("admin-ajax.php", null); ?>'; 
     data = { action: "data_insert", demo: demo};  
     $.ajax({ 
      url: ajaxurl, 
      data: data, 
      dataType: 'json', 
      type: 'post', 
      success: function(response) { 
       console.log(response); 
      } 
     }); 
    });  
}); 

PHP:

add_action('wp_ajax_data_insert', 'data_insert'); 
add_action('wp_ajax_nopriv_data_insert', 'data_insert'); 
function data_insert() { 
    $data = $_POST['demo']; 
    echo json_encode($data); 
    die(); 
} 
0

Добавьте "выход" конец функции как как показано ниже, это исправит возврат 0 с соответствующими onse в WordPress при использовании запроса ajax.

add_action('wp_ajax_nopriv_getStateList', 'getStateList'); 
add_action('wp_ajax_getStateList', 'getStateList'); 

function getStateList() { 
    global $wpdb; 
    $countryId = $_POST['countryId']; 
    $results = $wpdb->get_results("SELECT id,name FROM regions where country_id ='".$countryId."' "); 
    echo json_encode(array('status'=>200,'data'=>$results)); 
    exit; 
} 
+0

Спасибо за ответ. Может быть, вы можете добавить некоторое объяснение, что это изменит для устранения проблемы? –

+1

Я отредактировал комментарии, вы можете видеть выше. Для вашего FYI это прекратит возвращать 0 с ответом в WordPress при использовании запроса ajax. – abrar

Смежные вопросы