Я делаю функцию AJAX для WP. Но я всегда получаю ответ 0. Я вижу код файла admin-ajax.php и вижу это:

if ( empty( $_REQUEST['action'] ) )
    die( '0' );

Это моя функция JS AJAX.

function fnc(){

            var ajax=new  XMLHttpRequest();
            ajax.open("POST", "<?php echo get_site_url(); ?>/wp-admin/admin-ajax.php");



                ajax.onreadystatechange= function(){
                    if (ajax.readyState === 4) {
                        if (ajax.status === 200) {
                            alert(ajax.responseType);
                            alert(ajax.responseText);
                        } else {
                            alert('There was a problem with the request.');
                        }
                    }
                }
                ajax.send("action=some_function");


        }
0
Felipe Morales 25 Янв 2013 в 20:35

3 ответа

Лучший ответ

Чтобы использовать в качестве данных формы строку send, вам, вероятно, потребуется добавить следующий заголовок:

ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

Без этого PHP не превратит необработанные данные POST в переменные $_POST / $_REQUEST.

3
cmbuckley 25 Янв 2013 в 16:50
$.ajax({
          type:'POST',
          url:"<?php echo get_site_url(); ?>/wp-admin/admin-ajax.php",
          data:'', //  what you want to post
          success:function(data){
                    alert(data);
              });
             }
          });
        }

Попробуй это

-1
Dinkar Thakur 25 Янв 2013 в 16:40
If you want to use javascript and XMLHttpRequest this is the full way to do that :)


function ajax_post(){
// Create our XMLHttpRequest object
var ajax=new  XMLHttpRequest();

// Create data to send to our PHP file

var url = "xyz.php";
var fn = document.getElementById("a").value;
var ln = document.getElementById("b").value;
var variable = fn+" hello "+ln;
hr.open("POST", url, true);


// Set content type header  for sending url encoded variables

ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

// Get the onreadystatechange event for the XMLHttpRequest
ajax.onreadystatechange = function() {
    if(ajax.readyState == 4 && ajax.status == 200) {
        var return_data = ajax.responseText;
            alert(ajax.return_data);
            // Send the data to PHP now... and wait for response to update the status div
           ajax.send(variable); // Actually execute the request    
    }
}



}
-1
Dinkar Thakur 25 Янв 2013 в 16:55