使用AJAX和Wordpress获取结果

时间:2015-09-17 05:51:31

标签: php jquery ajax wordpress

我正在使用Wordpress,我创建了一个页面(dm_page.php),该页面使用 Contact form 7 插件,我在其中创建了下拉列表。在下拉列表的更改事件中,我正在点击ajax。我在header.php写的ajax代码。 ajax向其提供数据的文件是getdata.php,放在主题文件夹中。

访问getdata.php:

<?php
global $wpdb;

$ddlval = $_POST['ddlval'];
$results = $wpdb->get_row('select * from my_dynamictest where lang="'.$ddlval.'"', ARRAY_A);

$someArray = [];
array_push($someArray,[
    'id' => $results['id'],
    'name' => $results['name']
]);

echo json_encode($someArray);
?>

这是我得到的错误:

  

致命错误:在...中调用null成员函数get_row()

我无法弄清楚错误的含义。请帮忙。把我当作Wordpress中的初学者。

2 个答案:

答案 0 :(得分:0)

我假设你提供的是这个AJAX页面的代码总数。如果是这样,(可能有&#34;官方&#34; 方式进行AJAX调用)但我只是包含wp-config.php文件:

<?php
if(empty($_POST))
    exit;
// If file in the themes folder: /wp-content/themes/dm_page.php: /../../wp-config.php
// If file inside a theme in the theme folder: /wp-content/themes/mytheme/dm_page.php: /../../../wp-config.php
require(__DIR__.'/../../../wp-config.php');
global $wpdb; 
$ddlval  =  $_POST['ddlval'];
$results =  $wpdb->get_row('select * from my_dynamictest where lang="'.$ddlval.'"', ARRAY_A);

$someArray = [];
array_push($someArray,[
    'id' => $results['id'],
    'name' => $results['name']
]);

echo json_encode($someArray);
?>

修改

以下是一些显然&#34;官方&#34;添加ajax的方法:

http://codex.wordpress.org/AJAX_in_Plugins

http://www.1stwebdesigner.com/implement-ajax-wordpress-themes/

答案 1 :(得分:0)

您必须在文件的开头加载require(__DIR__.'/../../../wp-load.php');

所以 getdata.php:如下所示:

<?php
require(__DIR__.'/../../../wp-load.php');
global $wpdb;

$ddlval = $_POST['ddlval'];
$results = $wpdb->get_row('select * from my_dynamictest where lang="'.$ddlval.'"', ARRAY_A);

$someArray = [];
array_push($someArray,[
    'id' => $results['id'],
    'name' => $results['name']
]);

echo json_encode($someArray);
?>