$ http - Angular post参数和从PHP获取json

时间:2014-06-10 15:35:31

标签: php json angularjs http

我是Angular的新手,甚至更新的使用$ http。我无法得到的是以下_

  • 使用$ http发布参数(PHP执行调用所需的参数)
  • 获取JSON作为对该呼叫的响应

这是我到目前为止所得到的:

$ http电话:

var deferred = $q.defer();
var parametres = $.param({ nomWS: ws, servidor: ip, query: param, idCamping: dadesCamping[0], forceRenew: renew});       

var url = './api/functions.php?function=callWS_JSON'; 

$http({
    method: 'POST',
    url: url,
    data: parametres,
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function(data) {            
    console.log('success');
    deferred.resolve(data);
}); 

接听电话的php是使用通过$ _POST []发送的参数检索内容并使用以下内容获取json:

$fileContents = file_get_contents($url);        
echo $fileContents;

如果我在PHP脚本中手动设置参数,它会输出一个有效的JSON字符串,但当我回显它以便在我的javascript(angular)代码中检索它时,我在Chrome控制台中收到以下错误:

SyntaxError: Unexpected token &
at Object.parse (native)
at Vb (http://domain/lib/angular/angular.js:14:208)
at e.defaults.transformResponse (http://domain/lib/angular/angular.js:64:454)
at http://domain/lib/angular/angular.js:64:215
at Array.forEach (native)
at r (http://domain/lib/angular/angular.js:7:280)
at pc (http://domain/lib/angular/angular.js:64:197)
at c (http://domain/lib/angular/angular.js:65:400)
at C (http://domain/lib/angular/angular.js:94:187)
at http://domain/lib/angular/angular.js:95:350

如果我在内容的回声之前回应了一些内容我没有收到错误,控制台会输出以下信息:

test
{"clientesPresentes": {"cliente":...

(剪切输出,但想法很清楚)

我认为SyntaxError: Unexpected token &是因为输出。我非常确定问题是关于标头和内容类型。试图找到执行后调用的参数并获取json内容作为答案,但我没有设法找出答案。所以任何帮助都会非常准确。

提前致谢

PD:尝试在我的php文件中设置header('Content-type: application/json');,但我得到了相同的SyntaxError: Unexpected token &错误

提前致谢!

2 个答案:

答案 0 :(得分:0)

哪里来了参数?

我用这种方式。

var $scope.someData = {
   'param1': 12,
   'param2': 33
};

//someData var can also be set inside a form

<input type="text" ng-model="somedata.param1" >

//post and get available
$http.post('url.php' , $scope.someData)
    .success(function(res){
      ;
             })
    .error(function(error){
      ;
    });

并在php文件中以这种方式获取变量

$data = file_get_contents("php://input");
echo $data->param1;

答案 1 :(得分:0)

您可能在JSON文件中有非转义字符串。