ash
  • 0
Новичок

Невозможно использовать get_results() в запросе ajax

  • 0

Я использую вызов 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 );
    }
});

А это вызываемый код — markers.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-файле в папке с двадцатью темами но markers.php находится в корневом каталоге (по какой-то причине его нельзя было использовать, когда он был в теме).

Share
  1. Это не сработает, потому что вы вызываете example.com/markers.php напрямую, а этот файл ничего не загружает из WordPress, как $wpdb объект.

    Вы можете включить wp-load.php, но это может сломаться, если вы переместите установку WordPress в другое место. Чтобы больше соответствовать тому, как должны выполняться вызовы Ajax в WordPress, вы должны написать это как хук для wp_ajax_[action] . См. мое введение в Ajax в WordPress для более подробной информации.

    • 0
    • спасибо за подробный ответ, но это не моя лига. Пока я должен принять этот wp-load.php подход, и я напишу памятку, чтобы разобраться с этим, когда установка будет перемещена. Я был бы признателен, если бы вы могли помочь, несмотря на то, что выбрали менее предпочтительный подход. Я отредактировал свой вопрос и добавил результаты с этим включением.

      • 0

Оставить ответ

You must login to add an answer.