За последние 24 часа нас посетили 17215 программистов и 1748 роботов. Сейчас ищут 945 программистов ...

Не выводит результат

Тема в разделе "JavaScript и AJAX", создана пользователем Dark19, 17 июн 2014.

  1. Dark19

    Dark19 Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    51
    Симпатии:
    0
    Здравствуйте, не могу понять почему не работает. в js пишу так:
    Код (Text):
    1. $('#test_form').submit(function(e){
    2. //отменяем стандартное действие при отправке формы
    3.                             e.preventDefault();
    4.                             var weight=$('#weight').val();
    5.                             var date_out=$('#date_out').val();
    6.                             var tarif = self.calculate(distance);
    7.                             var obj = {
    8.                                 'tarif':tarif,
    9.                                 'distance':distance,
    10.                                 'address':address,
    11.                                 'start':start,
    12.                                 'finish':finish,
    13.                                 'weight':weight,
    14.                                 'date_out':date_out
    15.                             }
    16.                             $.ajax({
    17.                                 type: "POST",
    18.                                 url: "http://geo/ajax.php",
    19.                                 dataType: 'json',
    20.                                 data: 'obj='+JSON.stringify(obj),
    21.                                 success: function(msg){
    22.                                     //self._map.geoObjects.add(myPlacemark);
    23.                                     //self._map.geoObjects.add(myPlacemark2);
    24.                                     $("#result").empty();
    25.                                     $("#result").append(msg);
    26.                                 }
    27.                             });});
    в php так(ajax.php):
    Код (Text):
    1. if ($_POST['obj']){//Если з js пришла переменная obj(если obj существует) начинаем обработку
    2. $obj = json_decode($_POST['obj']);
    3.     $distance = $obj->distance;
    4.     $date_in = date('Y-m-d H:i:s');
    5.     $date_out = strip_tags($obj->date_out);
    6.     $weight = strip_tags($obj->weight);
    7.     $address = strip_tags($obj->address,'<p>');//Очищаем адрес от лишних тегов
    8.     $start = $obj->start;
    9.     $finish = $obj->finish;
    10.     $tarif = $obj->tarif;
    11.  
    12.     $long_st=$start[0];
    13.     $lat_st=$start[1];
    14.     $long_f=$finish[0];
    15.     $lat_f=$finish[1];
    16.  
    17. echo $myobj->searchMachine($weight,$address,$start,$finish,$date_in,$date_out,$long_st,$lat_st, $tarif);
    18.     $arr = array('distance' => $distance, 'date_out' => $date_out, 'weight' => $weight, 'address' => $address, 'start' => $start, 'finish' => $finish, 'tarif' => $tarif);
    19.  
    20.     echo json_encode($arr);
    21.  
    22.     echo "<b>Выбранный маршрут составит:</b> ".$distance." км<br/>";
    23.     echo "<b>Адрес:</b> ".$address."<br/><br/><br/>";
    24.     $celoe = intval($distance/60);//вытягиваем целое число из дистанции маршрута
    25.     $drobnoe = (($distance/60)-floor($celoe))*60;//вытягиваем дробное число из дистанции маршрута и умножаем на 60мин.
    26.     echo "<b>Минимальный срок доставки:</b> 1д. ".$celoe." ч. ".$drobnoe." мин."."<br/>";
    27. }
    Данные в php приходят, проверял в хроме f12
    Вывожу все это в див на странице index.php. В чем ошибка, почему не выводит результат?
     
  2. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Попробуйте в функции success сделать console.log(msg). У меня чувство, что msg это объект, а не строка.
     
  3. Dark19

    Dark19 Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    51
    Симпатии:
    0
    Да, вы правы, msg возвращается обьектом, но с ошибкой, то есть я добавил в ajax такую строку:
    Код (Text):
    1. error: function(msg) { //Если ошибка
    2.                                     console.log(msg);
    3.                                 }
    и только тогда в консоль вывело результат, как исправить, чтобы возвращалось без ошибки и в нормальном виде?
     
  4. Dark19

    Dark19 Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    51
    Симпатии:
    0
    В php приходит вот такое:
    Код (Text):
    1. obj:{"tarif":2756,"distance":689,"address":"<h3>село Зелёный Кут</h3><p>Украина, Одесская область, Котовский район</p>","start":[47.88436423580429,29.492181453124996],"finish":[47.706696689308224,36.501458796875006],"weight":"434","date_out":"2014-06-17 16:50:25"}
    а вот в js ответом уже уходит вот такое:
    Код (Text):
    1. address: ""
    2. date_out: ""
    3. distance: null
    4. finish: null
    5. start: null
    6. tarif: null
    7. weight: ""
    не понимаю почему так? Я как-то неправильно декодирую данные?
     
  5. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Уберите obj: в начале.
     
  6. Dark19

    Dark19 Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    51
    Симпатии:
    0
    так obj: это массив который из js приходит, вот скрин: https://www.dropbox.com/s/qdgqzgufrm6cpi2/screen.png
    Может я в js неправильно вывожу? вот код:
    Код (Text):
    1.                         $('#test_form').submit(function(e){
    2. //отменяем стандартное действие при отправке формы
    3.                             e.preventDefault();
    4.                             var weight=$('#weight').val();
    5.                             var date_out=$('#date_out').val();
    6.                             var tarif = self.calculate(distance);
    7.                             var long_f, lat_f;
    8.                             var obj = {
    9.                                 'tarif':tarif,
    10.                                 'distance':distance,
    11.                                 'address':address,
    12.                                 'start':start,
    13.                                 'finish':finish,
    14.                                 'weight':weight,
    15.                                 'date_out':date_out
    16.                             };
    17.                             $.ajax({
    18.                                 type: "POST",
    19.                                 url: "http://geo/ajax.php",
    20.                                 dataType: 'json',
    21.                                 data: 'obj='+JSON.stringify(obj),
    22.                                 success: function(msg){
    23.                                     $("#result").empty();
    24.                                     $("#result").append(msg);
    25.                                         console.log(msg);
    26.                                 },
    27.                                 error: function(msg) { //Если ошибка
    28.                                     console.log(msg);
    29.                                 }
    30.                             });});
     
  7. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Почему нельзя просто data: JSON.stringify(obj)?
     
  8. Dark19

    Dark19 Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    51
    Симпатии:
    0
    а как мне тогда принять его в php?
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    php.net/manual/ru/book.json.php
     
  10. Dark19

    Dark19 Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    51
    Симпатии:
    0
    Данные уже отправил, теперь не могу декодировать правильно или что, не пойму никак. С js данные отправляются с нормальными значениями, но после обработки в php они возвращаются с 0 или пустые. В js все данные приходят, и он выводит все, но с 0 и пустотой, в чем проблема может быть? Вот код php:
    Код (Text):
    1. if ($_POST['obj']){//Если з js пришла переменная obj(если obj существует) начинаем обработку
    2. $obj = json_decode($_POST['obj']);
    3. $distance = intval($obj->distance);
    4. $date_in = date('Y-m-d H:i:s');
    5. $date_out = strip_tags(date($obj->date_out));
    6. $weight = intval($obj->weight);
    7. $address = strip_tags($obj->address,'<p>');//Очищаем адрес от лишних тегов
    8. $start = doubleval($obj->start);
    9. $finish = doubleval($obj->finish);
    10. $tarif = intval($obj->tarif);
    11.  
    12. $long_st=$start[0];
    13. $lat_st=$start[1];
    14. $long_f=$finish[0];
    15. $lat_f=$finish[1];echo $myobj->searchMachine($weight,$address,$start,$finish,$date_in,$date_out,$long_st,$lat_st, $tarif);
    16. }
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    мы тебе не отладчики! http://phpfaq.ru/debug

    включи вывод предупреждений. посл чего исправь ВСЕ предупреждения.
    выясни что именно приходит с помощью var_dump или var_export.
    вижу у тебя есть float-значения — обрати внимание на точки/запятые. испытай сам "ручками" какие значения правильно интерпретируются.
     
  12. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    json.php:
    Код (PHP):
    1. if(isset($_POST['json'])) {
    2.     $json=json_decode($_POST['json']);
    3.     echo'Tarif: ',$json->tarif,' Distance: ',$json->distance;
    4. } 
    js.js:
    Код (PHP):
    1. var json={
    2.     'tarif':'turbo',
    3.     'distance':999
    4. };
    5. $.post('json.php',{
    6.     json:JSON.stringify(json)
    7. },function(data) {
    8.     alert(data);
    9.     /*
    10.         Tarif: turbo Distance: 999
    11.     */
    12. });