2015-03-23 2 views
0

Я пытаюсь отобразить параметры города на основе выбранного состояния, где состояния динамически загружаются в соответствии с выбранной страной (список стран статичен). но проблема в моей странице действий, которая получает данные от ajax, не получает никакого значения для состояния. Это моя первая попытка привязки события, поэтому, пожалуйста, помогите.Связывание событий с использованием jQuery

$(document).ready(function() { 
 
    $('#country').change(function() { 
 
    var value = $(this).val(); 
 
    $.ajax({ 
 
     url: "state_selector_db.php", 
 
     method: "post", 
 
     data: { 
 
     "country": value 
 
     }, 
 
     success: function(result) { 
 
     var obj = jQuery.parseJSON(result) 
 
     $('div#state').html(obj.state); 
 
     } 
 
    }); 
 
    }); 
 
    $('body').on("change", function() { 
 
    var value2 = $(this).val(); 
 
    $.ajax({ 
 
     url: "state_selector_db.php", 
 
     method: "post", 
 
     data: { 
 
     "state": value2 
 
     }, 
 
     success: function(res) { 
 
     var obj2 = jQuery.parseJSON(res) 
 
     $('div#city').html(obj2.city); 
 
     } 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p><b>Country:&nbsp</b> 
 
</p> 
 
<select id="country"> 
 
    <option value="na">Select</option> 
 
    <option value="india">India</option> 
 
    <option value="usa">USA</option> 
 
    <option value="england">England</option> 
 
</select> 
 
<div id="state"></div> 
 
<div id="city"></div>

+1

Также необходимо увидеть HTML-код. – Manwal

+0

Вы проверили, отправляет ли php-скрипт запрос на отправку правильных данных как действительных JSON? – MildlySerious

+0

На самом деле, используя $ ('body'). Change, вы напрямую ссылаетесь на тело. Несмотря на то, что он может работать, $ (this) должен тогда ссылаться на тело, а не на изменение ввода, не так ли? – briosheje

ответ

1

Вы на правильном пути, но вам нужно немного изменить в случае связывания

связать события, чтобы выбрать который вы заполнили после использования ajax. событие изменения имеет значение.

$(document).ready(function() { 
    $('body').on("change", "div#state select", function() { 
     var value2 = $(this).val(); 
     $.ajax({ 
      url: "state_selector_db.php", 
      method: "post", 
      data: { 
       "state": value2 
      }, 
      success: function (res) { 
       var obj2 = jQuery.parseJSON(res) 
       $('div#city').html(obj2.city); 
      } 
     }); 
    }); 
}); 
+0

спасибо, это сработало. – Sajan

0

Рассмотрим следующее дополнение:

$('body').on("change", "#state", function() { 
         ^^^^^^^^ 
Смежные вопросы