After Milo’s tutorship:
I recommend first reading how to use AJAX in Plugins properly. – Milo
yesterday
and reading another questions on wp.stack, my problem was solved)
Here is an examples of code from my rewritten files
1)get_state.php:
ad
add_action( 'wp_ajax_ajax_object', 'ajax_handler' );
add_action( 'wp_ajax_nopriv_ajax_object', 'ajax_handler' );
function ajax_handler() {
global $wpdb, $results, $info, $data, $retval, $result_bikes;
$excel_out = $wpdb->prefix.excel_out;
if(!empty($_POST['MARCA']) && empty($_POST['engine'])) {
$q = ("SELECT DISTINCT engine FROM $excel_out WHERE Brand = '".$_POST['MARCA']."'");
$results = $wpdb->get_results($q);
$info = 'Select Engine';
$data="engine";
}
if(!empty($_POST['MARCA']) && !empty($_POST['engine'])) {
$q = ("SELECT model FROM $excel_out WHERE Brand = '".$_POST['MARCA']."' AND engine="".$_POST["engine']."'");
$results = $wpdb->get_results($q);
$info = 'Select Model';
$data="model";
}
if(!empty($_POST['MARCA']) and !empty($_POST['engine']) and !empty($_POST['model'])) {
$q = ("SELECT year, Meiwa_air, oem_air, note_oil, meiwa_oil_black, oem_oil, meiwa_oil_crome, oem_crome FROM $excel_out WHERE Brand = '" . $_POST['MARCA'] . "' AND engine="" . $_POST["engine'] . "' AND model="" . $_POST["model'] . "'");
$results = $wpdb->get_results($q);
$info = 'Select year';
$data="year";
}
if(!empty($_POST['filtr'])) {
$q = ("SELECT `Brand`, `engine`, `model`, `year` FROM $excel_out WHERE `meiwa_oil_black` = '".$_POST['filtr']."'");
$result_bikes = $wpdb->get_results($q);
}
if(!empty($_POST['img_filter'])) {
$source = WP_PLUGIN_URL .'/oil-filters/MIW 600/'.$_POST['img_filter'].'.jpg';
echo $source;
}
if($results) {
echo '<option value="">'.$info.'</option>';
foreach ($results as $state) {
$retval="<option value="";
if($data == 'year') {
$retval .= $state->Meiwa_air.'@'.$state->oem_air.'@'.$state->note_oil.'@'.$state->meiwa_oil_black.'@'.$state->oem_oil.'@'.$state->meiwa_oil_crome.'@'.$state->oem_crome;
} else {
$retval .= ''.$state->$data.'';
}
$retval .= '">'.$state->$data;
$retval .= '</option>';
echo $retval;
}
}
if($result_bikes){
$brand = '';
foreach($result_bikes as $bikes){
if($brand != $bikes->Brand){
echo "<h3>".$bikes->Brand."</h3>";
}
$brand = $bikes->Brand;
echo '<p>'.$bikes->engine.' - '.$bikes->model.' - '.$bikes->year.'</p>';
}
}
wp_die();
}
2)script.js:
jQuery(document).ready(function($){
jQuery('#bike-name-list').on('change', function () {
var b = jQuery('#bike-name-list').val();
jQuery.ajax({
type: 'POST',
url: ajax_object.ajaxurl,
data: {
'action': 'ajax_object',
'MARCA': b
},
success: function (data) {
$("#engine").html('');
$("#engine").html(data);
}
});
});
jQuery("#engine").on("change", function () {
var b = jQuery("#bike-name-list").val();
var e = jQuery("#engine").val();
jQuery.ajax({
type: "POST",
url: ajax_object.ajaxurl,
data: {
'action': 'ajax_object',
'MARCA':b,
'engine':e
},
success: function (data) {
jQuery('#model').html('');
jQuery('#model').html(data);
}
});
});
jQuery("#model").on("change", function () {
var b = jQuery("#bike-name-list").val();
var e = jQuery("#engine").val();
var m = jQuery(this, "#model").val();
jQuery.ajax({
type: "POST",
url: ajax_object.ajaxurl,
data: {
'action': 'ajax_object',
'MARCA': b,
'engine': e,
'model': m
},
success: function (data) {
jQuery("#year").html('');
jQuery("#year").html(data);
}
});
});
jQuery("#year").on("change", function () {
var y = jQuery("#year").val();
if(!y)
return false;
var y = y.split('@');
if(y[3]) {
jQuery("#filter_number").val(y[3]);
jQuery.ajax({
type: "POST",
url: ajax_object.ajaxurl,
data: {
'action': 'ajax_object',
'img_filter': y[3]
},
success: function (data) {
jQuery("#drawing").attr('src', data);
console.log(data);
}
});
}
showInfo();
});
jQuery("#show_button").on('click', function () {
showInfo();
});
jQuery("#filter_number").on("keyup", function () {
var d = jQuery("#filter_number").val();
if(d != null && d != '') {
jQuery.ajax({
type: "POST",
url: ajax_object.ajaxurl,
data: {
'action': 'ajax_object',
'img_filter': d
},
success: function (data) {
jQuery("#drawing").attr('src', data);
console.log(data);
}
});
}
});
});
function showInfo(){
var name = jQuery('#filter_number').val();
if(name.length < 5)
return false;
jQuery.ajax({
type: "POST",
url: ajax_object.ajaxurl,
data: {
'action': 'ajax_object',
'filtr': name
},
success: function(data){
jQuery(".bikes").html('');
jQuery(".bikes").html(data);
}
});
}