I believe the problem could be with chain issues. See the documentation for end () .
empty() and append() executed in the same chain. This can sometimes cause problems due to the chaining algorithm. The documentation has a good description of the problem.
This may solve your problem.
$.getJSON(url, { countryId: $('#CountryID').val() }, function(response) { // clear and add default (null) option region .empty() .end() .append($('<option>', { value: '', text: 'Please select' })); $.each(response, function(key, tocken) { region.append($('<option>', { value: tocken["Id"], text: tocken["Name"] })); }); });
source share