Перейти к содержанию
nash

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

Рекомендуемые сообщения

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

<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());
?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для практики, разбираюсь с AJAX

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...
$json['resultat']
...
...
if (data.success) {
				$('.buttons').after('<div id="notific">' + data.success + '</div>');
...
$json -> data

success != resultat

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

поподробнее можно, пожалуйста?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нельзя васю называть петей :-)

data.success
>>

data.resultat

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.