我刚开始学习Angular,对使用$http更是一窍不通。以下是我无法理解的:
- 如何使用$http发送post请求(需要传递给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字符串,但是当我使用echo命令将其输出以便在我的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
如果在内容的echo之前我输出了一些东西,我就不会收到错误信息,控制台会输出以下内容:
test
{"clientesPresentes": {"cliente":...
我认为出现了“SyntaxError: Unexpected token &”的错误是由于输出引起的。而且我非常确定问题与标题和内容类型有关。尝试查找参数以执行post调用并获得json内容作为答案,但我没有成功找到。所以任何帮助都将不胜感激。
提前致谢
附注:我尝试在我的php文件中设置header('Content-type: application/json');
,但我仍然收到相同的SyntaxError: Unexpected token &
错误。
提前致谢!