 
			
				26.09.2016, 13:22
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.09.2016 
					
					
					
						Сообщений: 16
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как правильно реализовать замену?
			 
			
		
		
		
		Есть страница где загружаются данные по полям state и state_str 
Если в базе не находится для страны штат, выводится поле input,если есть select 
 
elseif( $component == "state" || $component == "state_str" ) {
		if( in_array( $d->country, country::$countries_with_parsed_states ) ) {
			if( $component == "state_str" ) {
				continue;
			}
			$state_map = country::get_region_list( $d->country, true );
			echo "<tr><td>" . $field_name . "</td><td id='state'><select  name='" . $component . "'>";
			echo "<option value='0'>Select State</option>";
			foreach( $state_map as $id_state => $label ) {
				echo "<option value='" . $id_state . "' " . ( $d->$component == $id_state ? 'selected=selected' : '' );
				echo ">" . $label . "</option>";
			}
			echo "</select></td></tr>";
		}
		else {
			if( $component == "state" ) {
				continue;
			}
			echo "<tr><td>" . $field_name . "</td><td id='statestr'>
			<input class='form-control' type='text' name='" . $component . "' value=\"" . str_replace( '"', '"', $d->$component ) . "\" /></td></tr>";
		}
Написал AJAX,чтобы при выборе страны из базы подгружались данные по штатам, если нет то ставилось поле с вводом
 
$("#country_code").change(function () {
			var id_country=$(this).val();
			$.ajax({
				type:  'POST',
				url:   '/ajax/state_country.php',
				data:  'id='+id_country,
				success: function (data) {
						$('#state').html(data);
                                                $('#statestr').html(data);
				}
			})
		});
Текст state_country.php
 
$term = (int)$_POST[ 'id' ];
$sql = $db->fetchAll( 'SELECT region_id, region_full_name FROM regions WHERE region_country_id = :id_country', [ 'id_country' => $term ] );
if ($sql){
	echo '<select  name="state">';
	foreach($sql as $state) {
		echo '<option value="' . $state ['region_id'] .'">' . $state ['region_full_name'] . '</option>';
	}
	echo '</select >';
} else {
	echo '<input class="form-control" type="text" name="state_str" />';
}
Данный метод работает затирая старые данные, можно ли в текущие поля подгружать данные? И чтобы при этом названия строки тоже менялось, если выбран state = State, если statestr = State str?  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.09.2016, 15:01
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.07.2016 
					
					
					
						Сообщений: 1,332
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ничего не понял, но суть вопроса такова: можно. 
 
if ($sql) echo json_encode($sql); 
 
и js переделать на получение списка в json. 
 
Почему нельзя на русском описать задачу? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.09.2016, 14:29
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.09.2016 
					
					
					
						Сообщений: 16
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Сорри, за написание 
Как мне правильно показывать данные JSON в select?
 
Вот файл AJAX
 
$term = (int)$_POST[ 'id' ];
$sql = $db->fetchAll( 'SELECT region_id, region_full_name FROM regions WHERE region_country_id = :id_country', [ 'id_country' => $term ] );
if ($sql){
	$r = [];
	foreach($sql as $state) {
		$r [] = ['id'=>$state['region_id'], 'name'=>$state['region_full_name']];
	}
} else {
	$r = null;
}
echo json_encode($r);
Вот вывод на страницу
	 
$("#country").change(function () {
			var id_country=$(this).val();
			$.ajax({
				type:  'POST',
				url:   '/ajax/state_country.php',
				data:  'id='+id_country,
				success: function (data) {
					pars=jQuery.parseJSON(data);
					
                                          { .... }
					}
			});
		});
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.09.2016, 15:20
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.07.2016 
					
					
					
						Сообщений: 1,332
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Я за тебя напишу ТЗ. 
 
Привет котаны, проблема такая. У меня форма выдается со страницей и тут все нормально. Но я захотел ее обновлять аяксом и сделал это. Но теперь мне выдается гребаный html, который я пихаю в форму и вполне понятно к чертям убиваю все, что там было введено или выбрано. Как мне сделать обновление данных? 
 
Котаны пишут. Придется сделать вилку в модели, которая увидев аякс-запрос наколет другой шаблон вывода - для аякса, или если MVC нету - вилку в рендере, которая увидев аякс-запрос выдаст данные, а не хтмл. А в жабаскрипте просто возьмешь объект и раскидаешь его по полям. 
 
Понял? ))) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.09.2016, 15:25
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.07.2016 
					
					
					
						Сообщений: 1,332
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Идентифицировать аякс можно по заголовку  
protected function get_ajax() {
		return $this->_d['ajax']=isset($_SERVER['HTTP_X_REQUESTED_WITH'])
			&& strcasecmp($_SERVER['HTTP_X_REQUESTED_WITH'],'xmlhttprequest')==0;
	}
Заголовок надо отправить из js, JQuery это умеет.
 
Или тупо приписав к адресу (в аякс-запросе на жабе) какой-нить ключик, типа ?ajax=ajax, чтобы затем в php if(isset($_GET['ajax'])) бла-бла-бла. Или просто запрашивать выделенный именно для этой задачи адрес.
 
Больше я не могу ничего советовать, потому что вообще не понял что там обновляется и куда чего пихать.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.09.2016, 15:33
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.07.2016 
					
					
					
						Сообщений: 1,332
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		pars=jQuery.parseJSON(data);
	 | 
 
	
 
 А теперь берешь берешь поле как элемент и пихаешь в него новые значения, или берешь старые значения, приделываешь новые.
 
Я старался но все равно нихера не понял твоей специфики. Вот нашел у себя. Задача там решается простая. Есть форма, редактируемая, ну типа как профиль скажем, юзер жмет сохранить, данные уходят на сервер, валидация, сохранение, а в качестве ответа приходят те же данные, но уже с сервера. Зачем так я сделал, хз, ну, типа, чтобы увидеть, как понял сервер, что именно записалось. Эти данные раскидываются после парсера жисона так
 
for(var name in data)
	if(name in the.inputs)
		the.inputs[name].update(data[name]);
 
the.inputs - это коллекция полей формы, каждое поле заворачивается в объект своего типа, у объекта есть методы, например .update().
 
А тебе все-то надо найти одно, или сколько там полей.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				27.09.2016, 15:35
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.07.2016 
					
					
					
						Сообщений: 1,332
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Короче, тут нужен спец по JQuery, там этих методов всякой аяксовой загрузки как гавна. Может есть и такой как тебе нужен, готовый. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.09.2016, 16:48
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от warren buffet
			
		
	 | 
 
	| 
		Короче, тут нужен спец по JQuery
	 | 
 
	
 
 А к чему тогда очередной словесный понос твой здесь?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				28.09.2016, 16:50
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 suxxoi, 
 elseif( $component == "state" || $component == "state_str" ) что это  
 
если  if( in_array( $d->country, country::$countries_with_parsed_states ) ) { 
  
и if( $component == "state_str" ) continue; 
 
?? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.09.2016, 18:30
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 08.07.2016 
					
					
					
						Сообщений: 1,332
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Теперь твоя очередь поносить. Хочешь гифку? ))) 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |