我在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>