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
Форумы портала PHP.SU :: Версия для печати :: cURL запросы
Форумы портала PHP.SU » » Вопросы новичков » cURL запросы

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

1. clockwerk - 02 Ноября, 2015 - 17:11:24 - перейти к сообщению
Добрый вечер господа, такая возникла проблема, в общем есть данные которые нам отдает другой сайт. У них есть 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 строчками кода...
2. Мелкий - 02 Ноября, 2015 - 17:23:31 - перейти к сообщению
Не знаю, что там у вас
clockwerk пишет:
//Здесь выводит всегда success

Но php даже банально синтаксически некорректен.
3. clockwerk - 02 Ноября, 2015 - 21:30:42 - перейти к сообщению
да сори не тот console.log смотрел, вобще ничего не выводит сейчас. А как нужно корректно?
4. SAD - 02 Ноября, 2015 - 21:47:42 - перейти к сообщению
success: function(res){
console.log(res);

покажите результат с консоли
5. clockwerk - 02 Ноября, 2015 - 22:11:18 - перейти к сообщению
Там вообще ничего не выводиться, пусто. Хотя если допустим ставлю в php файле

То в консоли в res выводиться имя. Т.е. то что надо
6. SAD - 02 Ноября, 2015 - 22:12:07 - перейти к сообщению
значит, причина в php коде, разбирайтесь
7. clockwerk - 02 Ноября, 2015 - 23:38:00 - перейти к сообщению
Сори сам тупил жестко спасибо что направили на путь истиный. Корректный запрос у меня получился такой, не знаю насколько правлиьный, но по крайней мере рабочий. Может кому пригодиться.
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 перед отправкой.
8. Faraon-san - 03 Ноября, 2015 - 09:33:28 - перейти к сообщению
Всегда запихивал пост данные в виде массива, ни когда не преобразовывал.

 

Powered by ExBB FM 1.0 RC1