2016-02-05 41 views
0

我已經在mysql中創建了一個自定義表。我輸入了一些測試數據,只是爲了看看我能否得出一些結果。查詢成功時,我只是在模板中運行它,所以我知道它的工作原理。正如我試圖將其轉換爲Ajax請求似乎沒有數據傳遞。我不知道我錯過了什麼,或者可能是我進入某個地方的錯誤,但似乎當我嘗試將它變成Ajax請求時,什麼也沒有發生。WordPress和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; 
} 

AJAX

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

回答

0

切換到此。希望它能幫助別人。

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> 

AJAX/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> 
0

你需要改變你的Ajax請求可溼性粉劑管理員/ admin.ajax.php。

如果您打開該文件,您會發現有一個名爲DOING_AJAX的常量設置。由於設置了DOING_AJAX以確保只有對此鏈接的請求才能避免將正常標題發送到瀏覽器。

其實你可以這樣調試:訪問<?php echo content_url(); ?>/themes/child/get-referral.php?q=xx,你會發現還有其他信息發送。這就是爲什麼阿賈克斯不起作用。

+0

感謝。是不是隻適用於管理員? –

+0

@RWHammond不,那個ajax是公開的方法 – harrrrrrry

+0

感謝zairwolf的回覆。欣賞它。無法讓這個工作。即時通訊只是要調用一個文件,而不是數據庫查詢。似乎工作。 –