Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Xmlhttp.responseText возвращает всегда 0

#1 Kuchuluk

Kuchuluk
  • Пользователь
  • 315 сообщений
  • Репутация: 5
0

Отправлено 13 Ноябрь 2013 - 20:43

есть два поля для ввода чисел, эти числа отправляются в php скрипт, который должен вернуть их сумму, но почему то он всегда возвращает ноль. Отправляю запрос и принимаю ответ этим скриптом
function summa ()
  {
   var slag_1 = $("input[name='slag_1']");
   var slag_2 = $("input[name='slag_2']");
   var xmlhttp = getXmlHttp(); // объект XMLHTTP
   xmlhttp.open("POST", "summa.php", true); // асинхронное соединение
   xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   xmlhttp.send("slag_1=" + encodeURIComponent(slag_1) + "$slag_2=" + encodeURIComponent(slag_2));
   xmlhttp.onreadystatechange = function ()
   {
	if (xmlhttp.readyState == 4) // ответ пришел
	{
          if (xmlhttp.status == 200) // сервер вернул код 200
          {
               var sum = xmlhttp.responseText;
	
                alert(sum);
           }
	}
   }
  }
а сам php скрипт такой
<?php
$s1 = $_POST['slag_1'];
$s2 = $_POST['slag_2'];
$sum = $s1 + $s2;
echo $sum;
?>

 

 

  • 0

#2 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 14 Ноябрь 2013 - 07:04

Учись дебажить скрипты.
После отправки данных, посмотри какие заголовки были отправлены, а конкретно - какая строка данных и что в ней.
Если данные отправились те, которые и должны были отправиться, то смотри пхп-скрипт.
Для начала добавь в ответ что-нибудь, что бы посмотреть, возвращает он хоть что-то или нет.
<?php
$s1 = $_POST['slag_1'];
$s2 = $_POST['slag_2'];
$sum = $s1 + $s2;
echo "ok " . $sum;
?>
Попробуй просто запустить этот скрипт, возможно в нем есть ошибка. Да-да, даже в 4-х строках может быть ошибка.
Потому что без ошибок никто не пишет.

А вообще, я бы предложил тебе использовать возможности jQuery. Код проще будет получаться.
$.ajax({
	type: "POST",
	url: "/summa.php",
	data: 'slag_1=3&slag_2=2',
	success: function(response){
	 alert(response);	
  
	}
   });
Такой код куда проще на мой взгляд.
  • 1
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#3 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 17 Ноябрь 2013 - 16:01

echo "ok " . $sum;

переделал код так, заработало
$s1 = $_POST['slag_1'];
$s2 = $_POST['slag_2'];
$s_1 = intval($s1);
$s_2 = intval($s2);
$sum = $s_1 + $s_2;
echo $sum;
не знал, что в PHP требуется обязательное приведение переменной к целочисленному виду для арифметических операций. Вроде всегда так складывалось...
  • 0

#4 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 18 Ноябрь 2013 - 09:00

не знал, что в PHP требуется обязательное приведение переменной к целочисленному виду

Вообще не обязательно приводить к целочисленному типу.
ПХП не строготипизированный язык.
  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.



Оформление форума – IPBSkins.ru