2013-02-15 3 views
1

Я перехожу из jquery $ .ajax, который отлично работает, используя AngularJS $ http.put для доступа к restful API.

Я могу сделать вызов API, но данные PUT не послан - поэтому мой API видит запрос PUT с пустым объектом данных, который должен содержать строку JSON ->data.values = 'a json structure'

$http.put(
    $rootScope.api_url, 
     { 
      values: jsonifiedValues 
     }, 
     { 
     headers: { 
      apihash: sha256hash 
     } 
    }).success(function(data,status,headers,config){ 
     // handle success 
}).error(function(data,status,headers,config) { 
     // handle failure 
}); 

Раньше я не использовал AngularJS $ http, но когда я вывожу данные в своем PHP api, он просто пуст. это то, как я потянув его из запроса в PHP:

parse_str(file_get_contents('php://input'), $put_vars); 
$arr_req_data = $put_vars['values'];  

В моей API, если apihash послал из запроса не соответствует SHA256 хэш построен на значениях PUT, он терпит неудачу.

Это работает в JQuery, просто проваливается, теперь я перешел на $ http. Я не уверен, почему данные PUT кажутся пустыми.

+1

Вы посмотрели, что браузер действительно отправляет с помощью devtools вашего браузера? – Andorbal

+0

Хорошо, я не проверял его, но данные отправлялись –

ответ

1

Возвращаемое значение от file_get_contents('php://input') будет строкой JSON (при условии, что все отправлено), поэтому parse_str не является правильной функцией для обработки этих данных.
Вместо этого используйте json_decode.

Также нет необходимости отправлять jsonified values ​​, это просто усложнит ситуацию, так как вам придется использовать json_decode дважды.

+0

Вот и все получилось, спасибо. Не знаю, почему jQuery работал, когда AngularJS не был. Методы AJAX выглядят так simialr –

+0

@Skeater Я бы сказал, что вы использовали jQuerys '.serialize', который будет работать с' parse_str', поскольку он создает правильный формат. – Yoshi

+0

есть ли способ получить '$ http.put', чтобы не отправлять объект json, и отправить правильно отформатированный объект? – Jhecht

Смежные вопросы