Wordpress and Ajax


Wordpress and Ajax

我在mysql中创建了一个自定义表。我输入了一些测试数据,只是为了看看我是否可以提取一些结果。当我只在模板中运行它时,查询成功,所以我知道它有效。当我试图将其转换为Ajax请求时,似乎没有传递任何数据。我不确定我错过了什么,或者可能是我在某处输入的错误,但似乎当我尝试将其转换为 Ajax 请求时没有任何反应。

有什么想法吗?

.PHP

    $q = intval($_GET['q']);
$pull = $wpdb->get_results( 
    "
    SELECT ID,  department, contact, forms
    FROM referrals
    WHERE ID = '$q'
    "
);
foreach ( $pull as $requestdata) 
{
    echo $requestdata->department;
    echo '<br />';
    echo $requestdata->contact;
    echo '<br />';
    echo $requestdata->forms;
}

阿贾克斯

<script>
                    function displayData(str) {
                      if (str=="") {
                        document.getElementById("txt").innerHTML="";
                        return;
                      }
                      if (window.XMLHttpRequest) {
                        // code for IE7+, Firefox, Chrome, Opera, Safari
                        xmlhttp=new XMLHttpRequest();
                      } 
                      xmlhttp.onreadystatechange=function() {
                        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                          document.getElementById("txt").innerHTML=xmlhttp.responseText;
                        }
                      }
                      xmlhttp.open("GET","<?php echo content_url(); ?>/themes/child/get-referral.php?q="+str, true);
                      xmlhttp.send();
                    }
                    </script>

.HTML

                                <select name="users" onchange="displayData(this.value)">
                                  <option value="">Select a person:</option>
                                  <option value="1">Test 1</option>
                                  <option value="2"Test 2</option>
                                  </select>
                                <br>
                                <div id="txt"></div>
您需要

将 ajax 请求更改为 wp-admin/admin.ajax.php。

如果打开该文件,您会发现有一个名为 DOING_AJAX 的常量设置。只有对此链接的请求才能避免由于将DOING_AJAX设置为 ture 而将正常标头发送到浏览器。

实际上你可以像这样调试:访问<?php echo content_url(); ?>/themes/child/get-referral.php?q=xx,你会发现还有其他信息被发送。 这就是 Ajax 不起作用的原因。

切换到这个。希望它能帮助其他人。

.HTML

<select id="mySelect" onchange="pullData()">
<option value="">Select</option>
<option value="options">options</option>
<option value="someother1">someother1</option>
<option value="someother_2">someother_2</option>
</select>
<div id="referral">Test</div>

阿贾克斯/JS

<script>
function pullData() {
var xhttp;
//url variables
var url = "/wp-content/referrals/";
var selectedValueIs = document.getElementById("mySelect").value;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} 
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("referral").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", url+selectedValueIs+'.txt' , true);
xhttp.send();
}
</script>