Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: cURL запросы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
clockwerk
Отправлено: 02 Ноября, 2015 - 17:11:24
Post Id



Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Добрый вечер господа, такая возникла проблема, в общем есть данные которые нам отдает другой сайт. У них есть APIшка и я все прекрасно получаю GET cURL запросами. Но у них можно оформить заявку. Тут принципиально использовать POST запрос, тоже ничего сложного, но заказчику край нужно что бы это было все асинхронно. JSONP они запрещают, поэтому пришлось изобретать велосипед. Аяксом передавать запрос на php файл, тот в свою очередь делает запрос, и возвращает результат. Но почему то запрос не работает, не могу понять причину
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. <script>
  3. $('#going-to-doctor').click(function(){
  4.         var error = false;
  5.         $('#error-name').hide();
  6.         $('#error-phone').hide();
  7.         if($('#name').val() == ''){
  8.                 error = true;
  9.                 $('#error-name').animate({'height': 'toggle'});
  10.         };
  11.         if($('#phone').val() == ''){
  12.                 error = true;
  13.                 $('#error-phone').animate({'height': 'toggle'});
  14.         };
  15.         if(error === false){
  16.                 $.ajax({
  17.                         type: 'POST',
  18.                         url: 'system/api/doctorNewDesk.php',
  19.                         data: 'doctorId=' + $('#doctorId').val() + '&clinicId=' + $('#clinicId').val() + '&name=' + $('#name').val() + '&phone=' + $('#phone').val() + '&comment=' + $('#comment').val(),
  20.                         success: function(res){
  21.                                 res = JSON.parse(res);
  22.                                 console.log(res.responce); //Здесь выводит всегда success
  23.                                 if (res.responce == 'success'){
  24.                                         $('#to-doctor').html("<h4><div class='col-sm-12'>Заявка приянта.<br> Вам перезвонят в течении 15 минут.<br> Спасибо, что воспользовались сервисом *****</div></h4>");
  25.                                 }
  26.                         }
  27.                 });
  28.         };
  29. });
  30.  
  31. </script>
  32.  
  33.  

Вот js код

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $ch = curl_init();
  5.  
  6. curl_setopt($ch, CURLOPT_URL, "https://login:pass@back.site.ru/api/rest/1.0.4/json/request/");
  7. curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  8. curl_setopt($ch, CURLOPT_POST, true);
  9. curl_setopt($ch, CURLOPT_POSTFIELDS, "name=" . echo $_POST['name'] . "&phone=" . echo $_POST['phone'] . "&doctor=" . $_POST['doctorId'] . "&clinic=" . $_POST['clinicId'] . "&comment=" . $_POST['comment']);
  10. $output = curl_exec($ch);
  11. curl_close($ch);
  12. if ($output === FALSE) {
  13. echo "cURL Error: " . curl_error($ch);
  14. }
  15.  
  16. echo $output;
  17.  

Ссылку они для пост запроса они нам сами предоставили, в ответе приходит JSON строка типа
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. {responce: 'success', message: 'что то там'} или {responce: 'error', message: 'что то там'}
  3.  


Не могу найти ошибку, подскажите в чем может быть проблема? Уже 2 часа сижу на 15 строчками кода...

(Отредактировано автором: 02 Ноября, 2015 - 17:13:00)

 
 Top
Мелкий Супермодератор
Отправлено: 02 Ноября, 2015 - 17:23:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Не знаю, что там у вас
clockwerk пишет:
//Здесь выводит всегда success

Но php даже банально синтаксически некорректен.


-----
PostgreSQL DBA
 
 Top
clockwerk
Отправлено: 02 Ноября, 2015 - 21:30:42
Post Id



Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




да сори не тот console.log смотрел, вобще ничего не выводит сейчас. А как нужно корректно?
 
 Top
SAD
Отправлено: 02 Ноября, 2015 - 21:47:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




success: function(res){
console.log(res);

покажите результат с консоли
 
 Top
clockwerk
Отправлено: 02 Ноября, 2015 - 22:11:18
Post Id



Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Там вообще ничего не выводиться, пусто. Хотя если допустим ставлю в php файле

То в консоли в res выводиться имя. Т.е. то что надо
 
 Top
SAD
Отправлено: 02 Ноября, 2015 - 22:12:07
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




значит, причина в php коде, разбирайтесь
 
 Top
clockwerk
Отправлено: 02 Ноября, 2015 - 23:38:00
Post Id



Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Сори сам тупил жестко спасибо что направили на путь истиный. Корректный запрос у меня получился такой, не знаю насколько правлиьный, но по крайней мере рабочий. Может кому пригодиться.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $post_data = array (  
  5.                 "name" => $_POST['name'],  
  6.                 "phone" => $_POST['phone'],  
  7.                 "doctor" => $_POST['doctorId'],
  8.                 "clinic" => $_POST['clinicId'],  
  9.                 "comment" => $_POST['comment']         
  10.         );  
  11.        
  12. $post_data = json_encode($post_data);
  13.  
  14. $ch = curl_init();
  15.  
  16. curl_setopt($ch, CURLOPT_URL, "https://login:pass@back.site.ru/api/rest/1.0.4/json/request/");
  17. curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
  18. curl_setopt($ch, CURLOPT_POST, true);
  19. curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  20. $output = curl_exec($ch);
  21. if ($output === FALSE) {
  22. echo "cURL Error: " . curl_error($ch);
  23. }
  24.  
  25. echo $output;
  26.  

И я так подозреваю все было из за того что я не преобразовывал в json перед отправкой.
 
 Top
Faraon-san
Отправлено: 03 Ноября, 2015 - 09:33:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




Всегда запихивал пост данные в виде массива, ни когда не преобразовывал.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB