【发布时间】:2014-08-07 16:10:58
【问题描述】:
我正在开发一个 angularjs 应用程序,我尝试设置的 $http 正在与 php 文件连接,并且标题显示我从 php 回显的响应。我的问题是:
- php 没有收到我发送给它的数据
- angularjs 没有在页面上显示 php 响应。
我是根据 tut 构建的: http://www.bennadel.com/blog/2612-using-the-http-service-in-angularjs-to-make-ajax-requests.htm
这是我的角度控制器
app.controller('LoginCtrl', ['$scope', 'userServices', function($scope, userServices) {
$scope.users = userServices.loginUser();
}]);
这是我的角度服务
app.factory('userServices', ['$http', function($http, $q) {
// return public api
return ({
loginUser: loginUser
});
/*
* attempt to login user
* returns user profile info if succeed or false if no match found
*/
function loginUser() {
var request = $http({
method: "post",
url: "../data/user.php",
params: {
action: "login"
},
data: {
userName: "me",
userPass: "pass"
}
});
return ( request.then(handleSuccess, handleError));
}
/*
* transform error response, unwrapping application data
*/
function handleError(response) {
// response should be returned in a normalized format
// when errors are given by the server we send our formated error
if(!angular.isObject(response.data) || !response.data.message) {
return( $q.reject("An unknown error occured"));
}
// use expected error message
return($q.reject(response.data.message));
}
// for success we unwrap the application data from API response payload
function handleSuccess(response) {
return(response.data.message);
}
最后是我的 php 文件
if(isset($_POST['userName'])) { // 'userName' is not set
echo '[{"message": "userName is '.$_POST['userName'].'"}]';
} else {
// php current returns this message in the header response
// angular is not seeing this message
echo '[{"message": "userName not set"}]';
}
感谢您对此事的帮助
【问题讨论】:
-
您的浏览器开发工具上的网络活动是什么样的?它会转到正确的网址吗?
-
你的意思是php文件路径吗? Firebug 显示一个成功的帖子,其中包含来自相关 php 文件的响应消息。 Angular 只是未能向其传递数据值并从中捕获响应消息。
-
你的代码有两个问题:一个是你的,一个是angular+php的。看我的回答
标签: javascript php ajax angularjs