Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   $.ajax. Изучаю Ajax (https://javascript.ru/forum/jquery/9851-%24-ajax-izuchayu-ajax.html)

Юрий Шу 08.06.2010 14:53

$.ajax. Изучаю Ajax
 
Начал изучать взаимодействие jQuery и Ajax.
Написал небольшой скрипт, который считает цену товара, исходя из выбранных данных:
<form method="post" id="price"> 
  <fieldset>
    <p>
	  <select name="good">
	    <option selected="selected">Выберите товар</option>
	    <option>Кефир</option>
	    <option>Молоко</option>
	    <option>Ряженка</option>
	  </select>
	</p>
	<p>
	  <select name="volume">
	    <option selected="selected">Выберите емкость</option>
	    <option>300 мл</option>
	    <option>500 мл</option>
	    <option>1 л</option>
	  </select>
	</p>
	<h1><span>0</span> руб.</h1>
  </fieldset> 
</form>

$(document).ready(function(){ 		
		$("#price select").change(function(){
			var good = $("select[name='good'] option:selected").text()
			var volume = $("select[name='volume'] option:selected").text()
	        $.ajax({ 
	           type: "POST", 
	           url: "events.php", 
	           data: { "good" : good, "volume" : volume }, 
	           success: function(msg){ 
	                $("<span>" + msg + "</span>").replaceAll("h1 span");
	           } 
	        });
		});
	});

if($_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest') {
      $price = array(
	          "Кефир"=>
	              array(
				  "300 мл"=>20,
				  "500 мл"=>30,
				  "1 л"=>48
				  ),
			  "Молоко"=>
	              array(
				  "300 мл"=>15,
				  "500 мл"=>25,
				  "1 л"=>36
				  ),
			  "Ряженка"=>
	              array(
				  "300 мл"=>21,
				  "500 мл"=>32,
				  "1 л"=>50
				  ));
      echo $price[$_POST['good']][$_POST['volume']];
}

Но вывод результирующей цены почему-то не работает. Если же вместо цены получать передаваемый массив POST, то данные видны, они приходят, но в массиве price почему-то не обрабатываются.

Подскажите, в чем загвоздка?

Юрий Шу 08.06.2010 15:20

Нашел ошибку сам. Оказалось, что в массиве price почему-то не воспринимается кириллица. На латинице все работает.

В связи с этим вопрос. Почему кириллица не работает?
P.S. Кодировка html документа — utf-8.

FRIE 08.06.2010 15:36

а ты пошли ему header в кодировке 1251 или какая у тебя там
а вообще советую делать всё в utf8 и тогра никаких проблем не будет

e1f 08.06.2010 15:45

Юрий Шу, везде utf-8? PHP-скрипт тоже сохранен в utf-8?

Юрий Шу 08.06.2010 15:48

e1f, пересохранил в utf-8. Все получилось. Спасибо.

Только еще вопрос. Насколько я понял, логично было бы данные с ценами хранить не в php-скрипте, а в json-файле и использовать $.getJSON для обработки полученных данных. Так?

e1f 08.06.2010 15:52

Юрий Шу, данные логично хранить там, где этим данным самое место -- в базе данных. Mysql, Postgre, google.

Юрий Шу 08.06.2010 15:56

e1f, хех. Спасибо. Но для практики, думаю, json подойдет :)

e1f 08.06.2010 16:04

Плохая практика :)


Часовой пояс GMT +3, время: 10:02.