无法在AJAX查询中使用GET_RESULTS()

时间:2011-05-30 作者:Ash

我使用jquery ajax调用从wpdb获取特定数据,得到以下消息:

<b>Fatal error</b>:  Call to a member function get_results() on a non-object in <b>C:\\wamp\\www\\maps_en2\\markers.php</b> on line <b>15</b><br />
这是电话:

$.ajax({
    type: "POST",
    url: "markers.php",
    data: ({\'southWestLat\' : southWestLat , \'southWestLng\' : southWestLng , \'northEastLat\' : northEastLat , \'northEastLng\' : northEastLng}),
    success: function(msg){
    alert( msg );
    }
});
这就是所谓的代码标记。php:

<?php
    global $wpdb;
    $sql = "SELECT user_id, lat, lng FROM coordinates WHERE lat>".$_POST["southWestLat"]." and lat<".$_POST["northEastLat"]." and lng>".$_POST["southWestLng"]." and lng<".$_POST["northEastLng"];
    $rows = $wpdb->get_results($sql, OBJECT_K);
    ...
?>
奇怪的是,当php代码与javascript在同一个文件中时(而不是参数“southWestLat”等,我使用了数字,然后它就工作了。
我应该声明jquery在php文件的twentyten主题文件夹下,但markers.php在根目录下(由于某种原因,当它在主题中时无法使用它)。

1 个回复
最合适的回答,由SO网友:Jan Fabry 整理而成

这行不通,因为你打电话example.com/markers.php 直接加载,并且该文件不从WordPress加载任何内容,如$wpdb 对象

您可以包括wp-load.php, 但是,如果您将WordPress安装移动到其他地方,这可能会中断。为了更符合WordPress中Ajax调用的方式,您应该将其编写为wp_ajax_[action]. 看见my introduction to Ajax in WordPress 了解更多详细信息。

结束

相关推荐

使用底层WordPress文件API的PHP5+流包装?

去年,我怀着极大的兴趣关注了JonStacey的gsoc项目,结果发现这个项目只是一个有效解决方案的“基础”。http://gsoc2010.wordpress.com/tag/stream-wrappers/遗憾的是,该项目今年似乎不是gsoc的一部分,因此该项目现在有些孤立。问题:有没有人知道wordpress的php流包装器已经完成了?