Ionic Framework http пост-запрос

Я хочу отправить POST запрос удаленного php-файла из ионного приложения для сохранения данных в кодировке base64 в базе данных. Когда я прохожу POST данные, я вижу, что параметр post отправляется, но когда я печатаю ответ из файла php, он пуст.

Я попробовал этот код:

controller.js

$http.post("someurl", {data: {"data333": 'peter'}});

Когда я печатаю $_POST или же $_REQUEST из PHP это пустой массив, но из моей консоли я вижу, что параметры передаются с помощью JSON {data: {"data333": 'peter'}},

Я разрешил кросс-домен как на клиенте, так и на сервере.

Я также попробовал стандартный способ AJAX:

$http.defaults.headers.post["Content-Type"] = 'application/x-www-form-urlencoded; charset=UTF-8';
$http({
method : 'POST',
url : 'someurl/',
headers: {
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
},
data : {"key": "value"}
})

Может ли кто-нибудь помочь мне передать данные?

1

Решение

Пользовательский объект для передачи данных на сервер. Надеюсь, это поможет вам

myobject = { email: user.email,password:user.password };
Object.toparams = function ObjecttoParams(obj)
{
var p = [];
for (var key in obj)
{
p.push(key + '=' + encodeURIComponent(obj[key]));
}
return p.join('&');
};

var req =
{
method: 'POST',
url: "API-CALLING-URL",
data: Object.toparams(myobject),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}

$http(req).
success(function(data, status, headers, config)
{
//success
}).
error(function(data, status, headers, config)
{
//error
});
6

Другие решения

Как опубликовано в angularjs-HTTP-пост-делает-не-отправить-данные, это может быть проблемой между AngularJS, использующим JSON и PHP, ожидающими данные формы.

Один ответ на стороне сервера / PHP:

ты можешь использовать:

$params = json_decode(file_get_contents('php://input'),true);

Чтобы получить доступ к массиву в PHP из AngularJS POST.

Принятый ответ рассказывает, как преобразовать данные AngularJS в стандартный пост-запрос. Это долго. (Массив JSON в строку POST и т. Д.)

0

Тело должно быть закодировано URI:

$http({
method : 'POST',
url : 'someurl/',
transformRequest: $httpParamSerializer,
headers: {
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
},
data : {"key": "value"}
})

Для получения дополнительной информации см. Справочник по API службы AngularJS $ httpParamSerializer

0

Я столкнулся с этой проблемой некоторое время назад. Включение этих заголовков в PHP API спасло мой день.

if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');    // cache for 1 day
}

// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");

if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers:        {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

exit(0);
}

Посмотреть детали моего вопроса Вот

0

попробуйте, это должно работать, убедитесь, что вы определили $ httpParamSerializerJQLike в контроллере, и все готово,

   .controller('myCtrl', function($http, $httpParamSerializerJQLike) {
$http({
method: 'POST',
url: baseUrl,
data: $httpParamSerializerJQLike({
"user":{
"email":"[email protected]",
"password":"123456"}
}),
headers:
{'Content-Type': 'application/x-www-form-urlencoded'},

})})

0
По вопросам рекламы [email protected]