2014-01-25 179 views
0

我在http://www.w3schools.com/php/php_ajax_database.asp处发现了以下脚本。但我发现很难通过wordpress实现,这在本地主机完美工作,但在wordpress失败。我已经完成搜索w /相同的过程,但仍然无法弄清楚。我可以一步一步询问如何通过wordpress调用ajax脚本吗?wordpress ajax - 通过wordpress通过AJAX从数据库获取信息

**的我的自定义的FrontPage * *

<?php 
/* 
Template Name: Custom Template 
*/ 
?> 
<?php 
/** 
* The template for displaying all pages. 
* 
* This is the template that displays all pages by default. 
* Please note that this is the WordPress construct of pages 
* and that other 'pages' on your WordPress site will use a 
* different template. 
* 
* @package WordPress 
* @subpackage Twenty_Eleven 
* @since Twenty Eleven 1.0 
*/ 

get_header(); ?> 
<script> 
function showUser(str) 
{ 
if (str=="") 
    { 
    document.getElementById("txtHint").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","getuser.php?q="+str,true); 
xmlhttp.send(); 
} 
</script> 
     <div id="primary"> 
      <div id="content" role="main"> 

<form> 
<select name = "users" onChange = "showUser(this.value)"> 
         <?php 
          include 'dbconfig.php'; 
          $result=mysql_query("SELECT DISTINCT lastname FROM people ORDER BY lastname ASC;"); 
          echo '<option value="">' . 'Select an Agent' . '</option>'; 

          while ($row=mysql_fetch_array($result)) 
           { 
           echo '<option value="' . $row['lastname'] . '">' . $row['lastname'] . '</option>'; 
           } 
         ?> 
         </select> 
</form> 
<br> 
<div id="txtHint"><b>Person info will be listed here.</b></div> 

      </div><!-- #content --> 
     </div><!-- #primary --> 

<?php get_footer(); ?> 

PHP文件(getuser.php)

<?php 
$q = intval($_GET['q']); 

include 'dbconfig.php'; // PHP File to login credentials 
$sql="SELECT * FROM people WHERE id = '".$q."'"; 

$result = mysql_query($sql); 

echo "<table border='1'> 
<tr> 
<th>Firstname</th> 
<th>Lastname</th> 
<th>Age</th> 
<th>Hometown</th> 
<th>Job</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['FirstName'] . "</td>"; 
    echo "<td>" . $row['LastName'] . "</td>"; 
    echo "<td>" . $row['Age'] . "</td>"; 
    echo "<td>" . $row['Hometown'] . "</td>"; 
    echo "<td>" . $row['Job'] . "</td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 

mysql_close($con); 
?> 

<?php 
$q = intval($_GET['q']); 

include 'dbconfig.php'; // PHP File to login credentials 
$sql="SELECT * FROM people WHERE id = '".$q."'"; 

$result = mysql_query($sql); 

echo "<table border='1'> 
<tr> 
<th>Firstname</th> 
<th>Lastname</th> 
<th>Age</th> 
<th>Hometown</th> 
<th>Job</th> 
</tr>"; 

while($row = mysql_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['firstname'] . "</td>"; 
    echo "<td>" . $row['lastname'] . "</td>"; 
    echo "<td>" . $row['age'] . "</td>"; 
    echo "<td>" . $row['hometown'] . "</td>"; 
    echo "<td>" . $row['job'] . "</td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 

mysql_close($con); 
?> 

采取的行动: 转换(的getUser。 PHP)作为函数,然后添加到主题functions.php。然后打电话给wp add_action hook.please看下面

function getuser(){ 
    //get the data from ajax() call 
    //copied script from getuser.php 
    } 
    // creating Ajax call for WordPress 
    add_action('wp_ajax_nopriv_getuser', 'getuser'); 
    add_action('wp_ajax_getuser', 'getuser'); 

您的帮助非常感谢。谢谢。解决

+0

[见这个答案](http://stackoverflow.com/questions/20831673/send-a-form-from-jquery-to-php-with-ajax-wordpress/20831780#20831780),它可能会有一些见解。 – Ohgodwhy

回答

0

第一个问题:在管理-ajax.php

那些ADD_ACTION走,然后可以触发functions.php的功能,它看起来好像你写那些functions.php的?这甚至对于面向Ajax的客户来说也是如此,尽管这并不一定有意义。

几个其它点:

考虑使用jquery或Ajax库至少在第一简化的东西,在客户端侧。

考虑在这里使用优秀的JSON api:http://wordpress.org/plugins/json-api/,我手动编写了大量的wap ajax函数,然后发现该函数库解决了我想做的工作少得多的工作。

编辑:

这是从我的网站采用了棱角分明的$ HTTP方法和上面的JSON API库的实例方法。此示例获取最新的3篇帖子,其中指定了自定义属性和值,只返回一些数据(以节省带宽)。

var baseUrl = http://localhost:3000 // Your Site Url Here 

$http({ 
     method:'GET', 
     url:baseUrl, 
     params:{ 
      json:'get_posts', 
      count:3, 
      include:'excerpt,thumbnail,title,slug,date,categories', 
      meta_key: 'featured', 
      meta_value: 'projects_yes' 
     } 
    }) 
     .success(function(data, status, headers, config){ 
      console.log(data); 
     }) 
     .error(function(data,status,headers,config){ 
      console.log(data,',\n', status, headers, config); 
     }); 
+0

谢谢阿德鲁的建议,你能告诉我如何使用ajax库或如何使它在任何方法中工作?实际上,我对PHP很陌生,wordpress只是学习如何连接脚本。更强大! – AbeDupa

+0

编辑包含角度和上述库的示例。我花了好几天的时间,并且无法强调这是用ajax调用wordpress数据的最简单方法。 –