Здравствуйте, не могу понять почему не работает. в js пишу так: Код (Text): $('#test_form').submit(function(e){ //отменяем стандартное действие при отправке формы e.preventDefault(); var weight=$('#weight').val(); var date_out=$('#date_out').val(); var tarif = self.calculate(distance); var obj = { 'tarif':tarif, 'distance':distance, 'address':address, 'start':start, 'finish':finish, 'weight':weight, 'date_out':date_out } $.ajax({ type: "POST", url: "http://geo/ajax.php", dataType: 'json', data: 'obj='+JSON.stringify(obj), success: function(msg){ //self._map.geoObjects.add(myPlacemark); //self._map.geoObjects.add(myPlacemark2); $("#result").empty(); $("#result").append(msg); } });}); в php так(ajax.php): Код (Text): if ($_POST['obj']){//Если з js пришла переменная obj(если obj существует) начинаем обработку $obj = json_decode($_POST['obj']); $distance = $obj->distance; $date_in = date('Y-m-d H:i:s'); $date_out = strip_tags($obj->date_out); $weight = strip_tags($obj->weight); $address = strip_tags($obj->address,'<p>');//Очищаем адрес от лишних тегов $start = $obj->start; $finish = $obj->finish; $tarif = $obj->tarif; $long_st=$start[0]; $lat_st=$start[1]; $long_f=$finish[0]; $lat_f=$finish[1]; echo $myobj->searchMachine($weight,$address,$start,$finish,$date_in,$date_out,$long_st,$lat_st, $tarif); $arr = array('distance' => $distance, 'date_out' => $date_out, 'weight' => $weight, 'address' => $address, 'start' => $start, 'finish' => $finish, 'tarif' => $tarif); echo json_encode($arr); echo "<b>Выбранный маршрут составит:</b> ".$distance." км<br/>"; echo "<b>Адрес:</b> ".$address."<br/><br/><br/>"; $celoe = intval($distance/60);//вытягиваем целое число из дистанции маршрута $drobnoe = (($distance/60)-floor($celoe))*60;//вытягиваем дробное число из дистанции маршрута и умножаем на 60мин. echo "<b>Минимальный срок доставки:</b> 1д. ".$celoe." ч. ".$drobnoe." мин."."<br/>"; } Данные в php приходят, проверял в хроме f12 Вывожу все это в див на странице index.php. В чем ошибка, почему не выводит результат?
Попробуйте в функции success сделать console.log(msg). У меня чувство, что msg это объект, а не строка.
Да, вы правы, msg возвращается обьектом, но с ошибкой, то есть я добавил в ajax такую строку: Код (Text): error: function(msg) { //Если ошибка console.log(msg); } и только тогда в консоль вывело результат, как исправить, чтобы возвращалось без ошибки и в нормальном виде?
В php приходит вот такое: Код (Text): 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): address: "" date_out: "" distance: null finish: null start: null tarif: null weight: "" не понимаю почему так? Я как-то неправильно декодирую данные?
так obj: это массив который из js приходит, вот скрин: https://www.dropbox.com/s/qdgqzgufrm6cpi2/screen.png Может я в js неправильно вывожу? вот код: Код (Text): $('#test_form').submit(function(e){ //отменяем стандартное действие при отправке формы e.preventDefault(); var weight=$('#weight').val(); var date_out=$('#date_out').val(); var tarif = self.calculate(distance); var long_f, lat_f; var obj = { 'tarif':tarif, 'distance':distance, 'address':address, 'start':start, 'finish':finish, 'weight':weight, 'date_out':date_out }; $.ajax({ type: "POST", url: "http://geo/ajax.php", dataType: 'json', data: 'obj='+JSON.stringify(obj), success: function(msg){ $("#result").empty(); $("#result").append(msg); console.log(msg); }, error: function(msg) { //Если ошибка console.log(msg); } });});
Данные уже отправил, теперь не могу декодировать правильно или что, не пойму никак. С js данные отправляются с нормальными значениями, но после обработки в php они возвращаются с 0 или пустые. В js все данные приходят, и он выводит все, но с 0 и пустотой, в чем проблема может быть? Вот код php: Код (Text): if ($_POST['obj']){//Если з js пришла переменная obj(если obj существует) начинаем обработку $obj = json_decode($_POST['obj']); $distance = intval($obj->distance); $date_in = date('Y-m-d H:i:s'); $date_out = strip_tags(date($obj->date_out)); $weight = intval($obj->weight); $address = strip_tags($obj->address,'<p>');//Очищаем адрес от лишних тегов $start = doubleval($obj->start); $finish = doubleval($obj->finish); $tarif = intval($obj->tarif); $long_st=$start[0]; $lat_st=$start[1]; $long_f=$finish[0]; $lat_f=$finish[1];echo $myobj->searchMachine($weight,$address,$start,$finish,$date_in,$date_out,$long_st,$lat_st, $tarif); }
мы тебе не отладчики! http://phpfaq.ru/debug включи вывод предупреждений. посл чего исправь ВСЕ предупреждения. выясни что именно приходит с помощью var_dump или var_export. вижу у тебя есть float-значения — обрати внимание на точки/запятые. испытай сам "ручками" какие значения правильно интерпретируются.
json.php: Код (PHP): if(isset($_POST['json'])) { $json=json_decode($_POST['json']); echo'Tarif: ',$json->tarif,' Distance: ',$json->distance; } js.js: Код (PHP): var json={ 'tarif':'turbo', 'distance':999 }; $.post('json.php',{ json:JSON.stringify(json) },function(data) { alert(data); /* Tarif: turbo Distance: 999 */ });