Почему только иногда данные передаются по ajax? (или вообще не передаются)
-
Id верхнего выпадающего списка: fld_5264117_1, а у нижнего: fld_5733170_1.
Я хочу сделать так, что бы после выбора пользователем региона посредством связи по ajax заполнились localities (каждый region содержит свои localities). Для этого я написал следующее:
1) скриптjQuery(document).ready(function ($) { function fill_region_selector() { //заполняем список выбора регионов $.post(my_ajax_obj.ajax_url, { _ajax_nonce: my_ajax_obj.nonce, action: "get_regions", }, function (data) { $("#fld_5264117_1").empty(); $("#fld_5264117_1").append('<option value="" selected disabled>Please select a region...</option>') for (num in data) { $("#fld_5264117_1").append($('<option>', { value: data[num], text: data[num], })); } }); } fill_region_selector(); $("#fld_5264117_1").change(function () { $.post(my_ajax_obj.ajax_url, { _ajax_nonce: my_ajax_obj.nonce, action: "get_localities_for_region", region: this.value }, function (data) { $('#fld_5733170_1').empty(); for (num in data) { $('#fld_5733170_1').append($('<option>', { value: data[num], text: data[num], })); } }); }); }
2) плагин (для wordpress):
<?php /* Plugin Name: patfron Description: Обеспечение функциональности сайта Version: 1.0 Author: pynix */ add_action( 'wp_enqueue_scripts', 'enqueue_trip_planner_page' ); function enqueue_trip_planner_page() { if ( ! is_page( 'trip-planner' ) ) { return; } wp_enqueue_script( 'ajax-script', plugins_url( '/js/trip_planner_ajax.js', __FILE__ ), array( 'jquery' ) ); $my_nonce = wp_create_nonce( 'dzmitry_nonce' ); wp_localize_script( 'ajax-script', 'my_ajax_obj', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => $my_nonce, ) ); } add_action( 'wp_ajax_get_regions', 'get_regions_ajax_handler' ); //wp_ajax_ и имя функции function get_regions_ajax_handler() { check_ajax_referer( 'dzmitry_nonce' ); $regions = []; $pfdb = new wpdb('fdb_user','fdb_user_pass','fdb','ssssiiii.ipagemysql.com'); foreach( $fdb->get_results("SELECT name FROM Regions;") as $key => $row) { $var = $row->name; array_push($regions, $var); } wp_send_json( $regions ); } add_action( 'wp_ajax_get_localities_for_region', 'get_localities_for_region_ajax_handler' ); //wp_ajax_ и имя функции function get_localities_for_region_ajax_handler() { check_ajax_referer( 'dzmitry_nonce' ); $region = $_POST['region']; $localities = []; $fdb = new wpdb('fdb_user','fdb_user_pass','fdb','ssssiiii.ipagemysql.com'); foreach ( $fdb->get_results( " SELECT Localities.name FROM Localities INNER JOIN Regions ON Localities.region_id = Regions.region_id WHERE Regions.name = '" . $region . "';") as $key => $row ) { $reg = $row->name; array_push($localities, $reg); } wp_send_json( $localities ); }
Теперь о проблеме.
Во-первых, это не работает, но все-таки иногда код работает, правда я не могу уловить закономерности: или из-за того, что я очищаю браузер, или из-за деактивации/активации плагина, или из-за чего-то еще.
Во-вторых, это все не работает если смотреть на мобильном телефоне.Пример работы (берет из базы по ajax):
Я понимаю, что тут тяжело другому человеку разобраться конкретно, но хотя бы подскажите, в чем может заключаться проблема, что бы я сам разобрался.
- Тема «Почему только иногда данные передаются по ajax? (или вообще не передаются)» закрыта для новых ответов.