AngularJS从跨域的PHP服务获取数据

时间:2014-08-22 19:48:36

标签: php angularjs

我目前有一个检查服务器信息的脚本。他们提供了一个名为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");
        });
});    

index.php

<?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变量。

1 个答案:

答案 0 :(得分:1)

可能你必须在PHP中的标题中添加以下内容:

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

可在此处找到更多信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS