it-swarm.com.de

Get_results () kann in einer Ajax-Abfrage nicht verwendet werden

Ich verwende einen jquery ajax-Aufruf, um bestimmte Daten von wpdb abzurufen, und erhalte die folgende Meldung:

<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 />

Dies ist der Aufruf:

$.ajax({
    type: "POST",
    url: "markers.php",
    data: ({'southWestLat' : southWestLat , 'southWestLng' : southWestLng , 'northEastLat' : northEastLat , 'northEastLng' : northEastLng}),
    success: function(msg){
    alert( msg );
    }
});

Und das ist die aufgerufene code - 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);
    ...
?>

Was seltsam ist, dass, wenn der PHP-Code in der gleichen Datei wie das Javascript war (und anstelle der Parameter 'southWestLat' usw., habe ich Zahlen verwendet, dann hat es funktioniert.
Ich sollte sagen, dass sich die jquery in einer PHP-Datei unter dem Ordner twentyten theme befindet, die Datei markers.php jedoch unter dem Stammverzeichnis (konnte sie aus irgendeinem Grund nicht verwenden, als sie im Theme war).

2
Ash

Dies funktioniert nicht, weil Sie example.com/markers.php direkt aufrufen und diese Datei nichts aus WordPress lädt, wie das $wpdb-Objekt.

Sie können wp-load.php einschließen, dies kann jedoch fehlschlagen, wenn Sie die WordPress-Installation an einen anderen Ort verschieben. Um besser mit den Ajax-Aufrufen in WordPress übereinzustimmen, sollten Sie es als Hook für wp_ajax_[action] schreiben. Siehe meine Einführung in Ajax in WordPress für weitere Details.

4
Jan Fabry