AngularJS跨域从php服务获取数据

AngularJS跨域从php服务获取数据,php,angularjs,Php,Angularjs,我目前有一个检查服务器信息的脚本。他们提供了一个名为index.php的文件——当我在URL中加载这个文件时,会生成一个.xml文件的内容 我的问题是,如何从控制器中的这个php文件/URL获取数据 我在脚本中使用了php url,但它不起作用 Controller.js var Factory = angular.module('Factory ', ['ngRoute']); Factory .controller('Controller', function ($scope, $http,

我目前有一个检查服务器信息的脚本。他们提供了一个名为index.php的文件——当我在URL中加载这个文件时,会生成一个.xml文件的内容

我的问题是,如何从控制器中的这个php文件/URL获取数据

我在脚本中使用了php url,但它不起作用

Controller.js

var Factory = angular.module('Factory ', ['ngRoute']);
Factory .controller('Controller', function ($scope, $http, $route)
{
     $http.get('http://example.com/index.php')
        .success(function (data) {
            $scope.data = data;
        })
        .error(function (data, status) {
            $scope.data = data || "FALSE";
            alert("error");
        });
});    
<?php
$mysqli = new mysqli('example.com','abc_5','gf#$6','example_db');
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP PROCEDURE IF EXISTS SP_getName") ||
    !$mysqli->query('CREATE PROCEDURE SP_getName() BEGIN SELECT Name from user_tbl END;')) {
    echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
$result = $mysqli->query("CALL SP_getName()");
while($row = mysqli_fetch_assoc($result)) {
    $output[] = array_map('utf8_encode', $row);
}
print(json_encode($output));
?>
index.php

var Factory = angular.module('Factory ', ['ngRoute']);
Factory .controller('Controller', function ($scope, $http, $route)
{
     $http.get('http://example.com/index.php')
        .success(function (data) {
            $scope.data = data;
        })
        .error(function (data, status) {
            $scope.data = data || "FALSE";
            alert("error");
        });
});    
<?php
$mysqli = new mysqli('example.com','abc_5','gf#$6','example_db');
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

if (!$mysqli->query("DROP PROCEDURE IF EXISTS SP_getName") ||
    !$mysqli->query('CREATE PROCEDURE SP_getName() BEGIN SELECT Name from user_tbl END;')) {
    echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
$result = $mysqli->query("CALL SP_getName()");
while($row = mysqli_fetch_assoc($result)) {
    $output[] = array_map('utf8_encode', $row);
}
print(json_encode($output));
?>


我试图从服务中调用数据,但什么也得不到。我知道查询是异步的,但我很难理解在返回数据后如何填充$scope变量

您可能需要在PHP中向标题中添加以下内容:

<?php header("Access-Control-Allow-Origin: *"); ?>


更多信息可以在这里找到:

ajax调用是否产生错误消息?还是php脚本的问题?如果你的php脚本只是回显一个字符串,你会遇到同样的问题吗?你能谈谈你的CORS配置吗?如果你必须跨域,你不在你的服务器中使用反向代理吗?你是否在与index.php相同的服务器中托管了你的角度页面?