Ich versuche, Datensätze aus einer Select-Abfrage innerhalb eines Plugins abrufen, aber keine Datensätze zurückgegeben werden, und ich die folgende Fehlermeldung (Webkonsole). Meine Frage ist, was ich hier mit Blick ?:[Wordpress + PHP + MySQL] Datenbank SELECT-Abfrage innerhalb Plugin gibt kein Ergebnis
Object { readyState: 4, getResponseHeader: .ajax/w.getResponseHeader(), getAllResponseHeaders: .ajax/w.getAllResponseHeaders(), setRequestHeader: .ajax/w.setRequestHeader(), overrideMimeType: .ajax/w.overrideMimeType(), statusCode: .ajax/w.statusCode(), abort: .ajax/w.abort(), state: .Deferred/d.state(), always: .Deferred/d.always(), then: .Deferred/d.then(), 12 more… } getregions.js:47:17
error getregions.js:48:17
Internal Server Error getregions.js:49:17
Mein PHP-Code lautet wie folgt:
function getregions_scripts() {
wp_enqueue_script(
'getregions-script',
plugin_dir_url(__FILE__) . "assets/getregions.js",
array('jquery'),
'1.0',
true
);
wp_localize_script(
'getregions-script', // this needs to match the name of our enqueued script
'gymRegions', // the name of the object
array('ajaxurl' => admin_url('admin-ajax.php')) // the property/value
);
}
add_action('wp_enqueue_scripts', 'getregions_scripts');
add_action('wp_ajax_showcountries', 'showcountries_callback');
add_action('wp_ajax_no_priv_showcountries', 'showcountries_callback');
function showcountries_callback() {
$mydb = new wpdb('user','password','db','localhost');
$mydb->show_errors();
$makeselection=$_POST["makeselection"];
if($makeselection=="getCountryList"){
//$showcountry = pdo_query("Select distinct wp_usermeta.meta_value, COUNTRY_MAPPING.COUNTRY_NAME from wp_usermeta, COUNTRY_MAPPING where wp_usermeta.meta_key = 'country_registration' and wp_usermeta.meta_value = COUNTRY_MAPPING.COUNTRY_CODE");
$table_name = $wpdb->prefix . "usermeta";
$sql = $wpdb->prepare("Select distinct meta_value, COUNTRY_MAPPING.COUNTRY_NAME
from {$table_name}, COUNTRY_MAPPING
where meta_key = 'country_registration'
and meta_value = COUNTRY_MAPPING.COUNTRY_CODE");
$showcountry = $wpdb->get_results($sql, ARRAY_A);
if (!$showcountry) {
//$message = 'Invalid query: ' . pdo_error() . "\n";
//$message .= 'Whole query: ' . $showcountry;
//die($message);
}else{
$html = "<option value=''>Select Country</option>";
foreach($showcountry as $row){
$html .= "<option value='{$row->meta_value}'>{$row->COUNTRY_NAME}</option>";
}
echo json_encode($html, JSON_PRETTY_PRINT);
}
}
wp_die();
}
Meine Javascript (getregions.js) Datei lautet wie folgt:
function feedData($) {
jQuery(document).ready(function ($) {
var serialized = $('#MyForm').serialize();
$.ajax({
cache: false,
type: "POST",
async: false,
url: gymRegions.ajaxurl,
data:{action: "showcountries", makeselection: "getCountryList", serialized},
dataType: "json",
success: function (data, status, error) {
$('#CountryList').append(data);
},
error: function (data, status, error) {
console.log(data);
console.log(status);
console.log(error);
}
});
});
}
Datei liest Meine .htaccess wie:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Vielen Dank im Voraus.
erste Fehler, den man nicht json zurückkehren, Ihre Funktion html Spitze zurückkehrt: Sie don 't eine andere Verbindung db, einfache Bedienung„g erstellen müssen lobal $ wpdb " –
Erledigt, als würde man nur' global $ wpdb' referenzieren. Aber immer noch bleiben meine ursprünglichen Probleme. Irgendwelche weiteren Vorschläge? – TheoG
ändern Sie Ihr Javascript dataType: "html", weil Ihr PHP-Code HTML und in PHP-Code anstelle von echo json_encode wirft ($ html, JSON_PRETTY_PRINT); nur schreiben echo $ html; –