Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 离子框架http post请求_Php_Angularjs_Http_Post_Ionic - Fatal编程技术网

Php 离子框架http post请求

Php 离子框架http post请求,php,angularjs,http,post,ionic,Php,Angularjs,Http,Post,Ionic,我想从ionic应用程序向远程php文件发送一个POST请求,将base64编码的数据保存在数据库中。当我传递POST数据时,我可以看到发送了POST参数,但是当我从php文件打印响应时,它是空的 我尝试了以下代码: controller.js $http.post("someurl", {data: {"data333": 'peter'}}); 当我从php打印$\u POST或$\u REQUEST时,它是一个空白数组,但从我的控制台可以看到参数是通过json{data:{“data33

我想从ionic应用程序向远程php文件发送一个
POST
请求,将base64编码的数据保存在数据库中。当我传递
POST
数据时,我可以看到发送了POST参数,但是当我从php文件打印响应时,它是空的

我尝试了以下代码:

controller.js

$http.post("someurl", {data: {"data333": 'peter'}});
当我从php打印
$\u POST
$\u REQUEST
时,它是一个空白数组,但从我的控制台可以看到参数是通过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"}
})
有人能帮我传递数据吗?

如中所述,这可能是使用JSON的AngularJS和需要表单数据的PHP之间的问题

是服务器端/PHP:

您可以使用:

$params = json_decode(file_get_contents('php://input'),true);
从AngularJS帖子访问PHP中的数组

告诉您如何将AngularJS数据转换为标准post请求。它很长。(JSON数组到POST字符串等)

如中所述,这可能是使用JSON的AngularJS和需要表单数据的PHP之间的问题

是服务器端/PHP:

您可以使用:

$params = json_decode(file_get_contents('php://input'),true);
从AngularJS帖子访问PHP中的数组


告诉您如何将AngularJS数据转换为标准post请求。它很长。(JSON数组到POST字符串等)

将数据传递到服务器的用户对象。希望对你有帮助

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
});

将数据传递到服务器的用户对象。希望对你有帮助

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
});

正文需要进行uri编码:

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

有关更多信息,请参见

正文需要进行uri编码:

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

有关详细信息,请参见我不久前遇到的问题。在PHPAPI中包含这些标题节省了我的时间

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);
}

查看我的问题的详细信息

我刚才遇到这个问题。在PHPAPI中包含这些标题节省了我的时间

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);
}

查看我的问题的详细信息

试试这个,它应该会起作用,确保在控制器中定义$httpParamSerializerJQLike,然后就可以开始了

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

})})

试试这个,它应该可以工作,确保您在控制器中定义了$httpParamSerializerJQLike,并且您可以开始了

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

})})

您能看到服务器是否接收到数据吗?(例如通过tcpdump/wireshark)在ionic论坛中也有同样的问题:您能看到服务器是否接收到数据吗?(例如,通过tcpdump/wireshark)在爱奥尼亚论坛上也有同样的问题:我仍然无法从中获取帖子数据server@user3660436:如果问题仍然没有解决,您可以尝试编辑。这对我很有效。我没想到我会得到JSON而不是标准的POST请求。我仍然无法从中捕获POST数据server@user3660436:如果问题仍然没有解决,您可以尝试编辑。这对我很有效。这也是一个很好的解决方案:我很高兴它对你有帮助这也是一个很好的解决方案:我很高兴它对你有帮助