我正在使用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中的初学者。
答案 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);
?>