使用$ http时,ionic不能传递参数

时间:2014-11-19 08:53:36

标签: php angularjs

当托盘使用$ http将angularJS与我的PHP服务器端脚本连接时,我遇到了问题。

我的$ http看起来像这样

$http.get('http://www.muslimsquare.com/sandbox/user_login.php', {"userID":'123456'}).
                      success(function(data, status, headers, config) {
                        // this callback will be called asynchronously
                        // when the response is available
                        alert(data);
                      }).
                      error(function(data, status, headers, config) {
                        // called asynchronously if an error occurs
                        // or server returns response with an error status.
                        alert(data)
                      });

正如您所见,我尝试将值为123456的userID传递给我的服务器。我的PHP脚本就像这样

<?php
echo 'userID is'.$_GET['userID'];
?>

它只是将userID响应回客户端。

当我运行此代码时,它只显示

  

userID是

没有用户ID返回客户端。

我的代码出了什么问题。

任何想法如何解决这个问题?

谢谢。

3 个答案:

答案 0 :(得分:0)

这就是我使用htttp方法的方法,

                $http({method: 'get', url: 'http://www.muslimsquare.com/sandbox/user_login.php?userID=123456'}).
                  success(function(data, status, headers, config) {
                    // this callback will be called asynchronously
                    // when the response is available
                    alert(data);
                  }).
                  error(function(data, status, headers, config) {
                    // called asynchronously if an error occurs
                    // or server returns response with an error status.
                    alert(data)
                  });

错误不在角度

XMLHttpRequest cannot load http://www.muslimsquare.com/sandbox/user_login.php?userID=123456. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://s.codepen.io' is therefore not allowed access. index.html:1
null 

您尝试连接的服务器已禁用其他服务器以阻止交叉脚本,要禁用此功能,您需要在user_login.php中设置标头

将其添加到php文件的顶部

header('Access-Control-Allow-Origin: *');

然后尝试this codepen

答案 1 :(得分:0)

此http请求是异步的。这意味着,尝试这种方法: 在您的服务功能中调用此功能

promise = $http({
                url: "http://your.url.com/service.php",
                method: "POST",
                data: {"data":data}
            }).then(function(response) {
                // The then function here is an opportunity to modify the response
                // The return value gets picked up by the then in the controller.
                return response.data;
            });
            // Return the promise to the controller
            return promise;

在控制器中调用服务,如:

Service.getData(data).then(function(returnedData) {
        $scope.data = returnedData;
    });

您从服务返回的数据现在位于$ scope.data中,并将显示在您的前端{{data.value}}

希望这有帮助

答案 2 :(得分:0)

嘿,你的第一个代码是正确的,虽然它意味着获取JSON数据。

<?php
echo 'userID is'.$_GET['userID'];
?>

这不会输出json

如果您还没有找到解决方案,请尝试此操作

$userId = $_GET['userID'];

echo '{"userID ":$userId}';

然后在提取方

$http.get('test.php', { params:{ "userID": 2, "name": "yourNameIfAny" } }).then(function(resp){
console.log('Success', resp);
// For JSON responses, resp.data contains the result
$scope.conditions = resp.data.userID;
 $ionicPopup.confirm({
 title: 'Json Responce',
 template: resp.data.userID
   });
  confirmPopup.then(function(res) {
 if(res) {
   console.log('You are sure');
 } else {
   console.log('You are not sure');
 }
 });