Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

вычисления через AJAX


nash

Recommended Posts

Есть форма, куда вводятся числовые значения.

<div class="box">
  <div class="box-heading"><?php echo $heading_title; ?></div>
  <div class="box-content">
		 
    <h2 id="zag">Заголовок</h2>
    <form action="#" method="post" enctype="multipart/form-data">
	<div class="content">
	
    <b><?php echo $text_p1; ?></b><br />
    <input type="text" name="p1" value="<?php echo $p1; ?>" />
    <br />
    <?php if ($error_p1) { ?>
    <span class="error"><?php echo $error_p1; ?></span>
    <?php } ?>
    <br />
	
    <b><?php echo $text_p2; ?></b><br />
    <input type="text" name="p2" value="<?php echo $p2; ?>" />
    <br />
    <?php if ($error_p2) { ?>
    <span class="error"><?php echo $error_p2; ?></span>
    <?php } ?>
    <br />
    
	 <b><?php echo $text_lyudi; ?></b><br />
    <input type="text" name="lyudi" value="<?php echo $lyudi; ?>" />
    <br />
    <?php if ($error_lyudi) { ?>
    <span class="error"><?php echo $error_lyudi; ?></span>
    <?php } ?>
    <br />
	
                  	
	 <b><?php echo $text_p3; ?></b><br />
    <input type="text" name="p3" value="<?php echo $p3; ?>" />
    <br />
    <?php if ($error_p3) { ?>
    <span class="error"><?php echo $error_p3; ?></span>
    <?php } ?>
    <br />
	
	<div class="buttons">
      <div class="right"><input type="submit" id="btn1" value="<?php echo $text_btn; ?>" class="button" /></div>
    </div>
	
	<?php if ($resultat) { ?>
	<div id="notific"><?php echo $resultat; ?></div>
	<?php } ?>
	
    </div>
    </form>
  
  </div>
</div>

в контроллере:

if ($this->request->server['REQUEST_METHOD'] == 'POST') {
			
			$this->data['p1'] = $this->request->post['p1'];
			$this->data['p2'] = $this->request->post['p2'];
			$this->data['p3'] = $this->request->post['p3'];
			$this->data['resultat'] = $this->data['p1'] + $this->data['p2'] + $this->data['p3'];
			}

пытался написать скрипт AJAX, но ничего не получилось, сложение трех переменных не происходит.

Без скрипта переменные складываются, но страница перезагружается(( Скиньте примерчик, пожалуйста. Хочу разобраться

Надіслати
Поділитися на інших сайтах


Конечно перегружается, идет же обычный Post.

Для отдельного ajax вызова нужно создать отдельный публичный метод в контроллере и дергать именно его.

public function index() {
....
}

public function insert() {
...
}

public function myAjaxMethod() {
... А вот тут уже обработка

        $this->response->addHeader('Content-Type: application/json; charset=utf-8');
        $this->response->setOutput(json_encode($json));
}
 

 

 

Ну и в виде дергать

$.ajax(....url : index.php?route=xxx/controller/myAjaxMethod
Надіслати
Поділитися на інших сайтах

<script type="text/javascript"><!--
	$('#btn1').bind('click', function() {
	$.ajax({
		type: 'POST',
		url: 'index.php?route=module/calc/rasschet',
		dataType: 'json',
		data: 'ploschad=' + encodeURIComponent($('input[name=\'ploschad\']').val()) + '&lyudi=' + encodeURIComponent($('input[name=\'lyudi\']').val()),
		beforeSend: function() {
		//	$('.success, .warning').remove();
			$('#btn1').attr('disabled', true);
			$('#zag').after('<div class="attention"><img src="catalog/view/theme/default/image/loading.gif" alt="" /> подожди!</div>');
		},
		complete: function() {
			$('#btn1').attr('disabled', false);
			$('.attention').remove();
			notific.innerHTML = $('input[name=\'lyudi\']').val() + $('input[name=\'ploschad\']').val();
		},
		success: function(data) {
			
			if (data.success) {
				$('.buttons').after('<div id="notific">' + data.success + '</div>');
			}
		}
	});
});
</script>
		public function rasschet() {
			$this->language->load('module/calc');
			
			if ($this->request->server['REQUEST_METHOD'] == 'POST') {
			
			$this->data['ploschad'] = $this->request->post['ploschad'];
			$this->data['lyudi'] = $this->request->post['lyudi'];
			$this->data['PC'] = $this->request->post['PC'];
			$this->data['moschnost_priborov'] = $this->request->post['moschnost_priborov'];		

			$this->data['resultat'] = $this->data['ploschad'] + $this->data['lyudi'];
			}
			
			$this->response->addHeader('Content-Type: application/json; charset=utf-8');
			$this->response->setOutput(json_encode($json));
			
		}

вот вроде написал, но не выводит результат(

Надіслати
Поділитися на інших сайтах


if ($this->request->server['REQUEST_METHOD'] == 'POST') {

Нахрена? :)

 

Считаем  $this->data

а отдаем

$json

 

Уж определитесь.

public function rasschet() {
			$this->language->load('module/calc');
			$json = array();
			
			$json['ploschad'] = $this->request->post['ploschad'];
			$json['lyudi'] = $this->request->post['lyudi'];
			$json['PC'] = $this->request->post['PC'];
			$json['moschnost_priborov'] = $this->request->post['moschnost_priborov'];		

			$json['resultat'] = $json['ploschad'] + $json['lyudi'];
			
			$this->response->addHeader('Content-Type: application/json; charset=utf-8');
			$this->response->setOutput(json_encode($json));
			
		}
Надіслати
Поділитися на інших сайтах

сделал так... но результат вычислений не отображается... появляется и затем пропадает только вот эта штука, а результата вычислений нет:

$('#zag').after('<div class="attention"><img src="catalog/view/theme/default/image/loading.gif" alt="" /> подожди!</div>');
Надіслати
Поділитися на інших сайтах


а зачем все это, если сумму чисел из двух полей можно посчитать простейшим javascript

var resultat = ($('input[name="ploschad"]').val() + $('input[name="lyudi"]').val());
?
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.