我的ajax发送帖子在JS中不起作用

时间:2018-05-21 15:49:58

标签: javascript php ajax wordpress

我有一个wordrpess网站,我正在尝试执行ajax调用来发送变量,但是当我尝试检索变量时我无法使其工作我没有得到任何回报这是我的代码:

<script type="text/javascript">

            window.onload = function(){
            var boton = document.getElementsByClassName("teatro-buy");
            const xhr = new XMLHttpRequest();


            xhr.onload = function ()
            {
                console.log(this.responseText); 
            }
            for (let qq = 0; qq < boton.length; qq++) 
            {

                            boton[qq].onclick = function() 
                            { 

                                 botonid =  this.id ;

                              xhr.open("POST", "ajaxcallnew.php")
                              xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                              xhr.send("lol=" + botonid);
                              console.log(botonid);





                            }

            } 

        };

</script>

这是我的php

<?php 
if(isset($_POST['lol'])){ //check if $_POST['examplePHP'] exists
        echo $_POST['lol']; // echo the data
        die(); // stop execution of the script.
    }

?>

3 个答案:

答案 0 :(得分:1)

  1. 你可以var_dump($ _ POST)或var_dump($ _ SERVER)或echo 1 ...如果它是空的,你的请求不会到达php
  2. 你可以阅读服务器日志(例如nginx日志,apache日志......几乎它们存在于运行时文件夹中)
  3. 检查您的格式:

    的示例:

    (1)得到:

    var ajax = new XMLHttpRequest();
    ajax.open('get','getStar.php?starName='+name);
    ajax.send();
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
            console.log(xhr.responseText);
        } 
    };
    

    (2)发布:

    var xhr = new XMLHttpRequest();
    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xhr.open('post', '02.post.php' );
    xhr.send('name=fox&age=18');
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
            console.log(xhr.responseText);
        } 
    };
    

答案 1 :(得分:0)

您必须添加到您的请求操作属性。

例如:

jQuery.ajax({
            url: ajaxurl, // ('admin-ajax.php')
            method: 'POST',
            dataType: 'json',
            data: {action: 'yourvalue', fields: info},
            success: function (json) {
                console.log(json)
        });

并在functions.php上添加以下内容:

add_action('wp_ajax_nopriv_actionValue', 'FunkName');
add_action("wp_ajax_actionValue", 'FunkName');
function FunkName()
{
   //buisness logic
}

答案 2 :(得分:-1)

为什么不使用jQuery呢?它会变得非常简单。

$.ajax({
 url:'path_to_php_file.php',
 type:'post',
 data:{'lol':'value_for_lol'},
 onsuccess:function(response){
    alert(response);
 }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

https://www.w3schools.com/jquery/default.asp