Angularjs :- 如何使用 $http.get() 获得函数的响应?
Angularjs :- how to get funtion's response using $http.get()?
我是 anggular js 的新手。我有一个 test.html 页面。
test.html
<!DOCTYPE html>
<html>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14 /angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="customersCtrl">
<table>
<tr ng-repeat="x in names">
<!-- <td>{{ x.Name }}</td>
<td>{{ x.Country }}</td> -->
</tr>
</table>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
$http.get("../../../frontend/controllers/CategoryController/Index")
.success(function (response) {
//$scope.names = response.records;
console.log(response);
});
});
</script>
</body>
</html>
==================
category controller
==================
<?php
namespace frontend\controllers;
use Yii;
use common\models\LoginForm;
use frontend\models\PasswordResetRequestForm;
use frontend\models\ResetPasswordForm;
use frontend\models\SignupForm;
use frontend\models\ContactForm;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
/**
* Site controller
*/
class CategoryController extends Controller
{
/**
* @inheritdoc
*/
public $str;
public function actionIndex(){
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$id = 2015;
return $id;
}
}
?>
当我 运行 test.html 时,请求(调用)将转到 cust.php 页面和 return 响应。
请建议我如何将请求发送到函数?
我在 firebug 中遇到以下错误。
获取http://localhost/yii2-angular-seed-master/frontend/controllers/CategoryController/testdata
404 未找到
"NetworkError: 404 Not Found - http://localhost/yii2-angular-seed-master/frontend/controllers/CategoryController/Index"
在cust.php中你实际上也需要调用函数
<?php
header('Content-Type: application/json');
function testdata(){
$str='{"employees":[{"firstName":"John", "lastName":"Doe"},{"firstName":"Anna", "lastName":"Smith"},{"firstName":"Peter", "lastName":"Jones"}]}';
return $str;
}
echo testdata();
?>
编辑:我也必须更改您的 $str,单引号围绕键和值无效,我已将其更改为有效的双引号 "。
正如@charlietfl 所说,更好的做法是 json_encode 您的 JSON 回复而不是自己写。
您可以在post方法中发送您的函数名称,并在php页面上获取该方法,使用它您可以执行函数。
app.controller('customersCtrl', function($scope, $http) {
var request = $http.post('acctUpdate.php', {fun: "testdata"});
request.success(
function( html ) {
console.log(html);
}
); });
我是 anggular js 的新手。我有一个 test.html 页面。
test.html
<!DOCTYPE html>
<html>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14 /angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="customersCtrl">
<table>
<tr ng-repeat="x in names">
<!-- <td>{{ x.Name }}</td>
<td>{{ x.Country }}</td> -->
</tr>
</table>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
$http.get("../../../frontend/controllers/CategoryController/Index")
.success(function (response) {
//$scope.names = response.records;
console.log(response);
});
});
</script>
</body>
</html>
==================
category controller
==================
<?php
namespace frontend\controllers;
use Yii;
use common\models\LoginForm;
use frontend\models\PasswordResetRequestForm;
use frontend\models\ResetPasswordForm;
use frontend\models\SignupForm;
use frontend\models\ContactForm;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
/**
* Site controller
*/
class CategoryController extends Controller
{
/**
* @inheritdoc
*/
public $str;
public function actionIndex(){
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
$id = 2015;
return $id;
}
}
?>
当我 运行 test.html 时,请求(调用)将转到 cust.php 页面和 return 响应。 请建议我如何将请求发送到函数?
我在 firebug 中遇到以下错误。
获取http://localhost/yii2-angular-seed-master/frontend/controllers/CategoryController/testdata
404 未找到
"NetworkError: 404 Not Found - http://localhost/yii2-angular-seed-master/frontend/controllers/CategoryController/Index"
在cust.php中你实际上也需要调用函数
<?php
header('Content-Type: application/json');
function testdata(){
$str='{"employees":[{"firstName":"John", "lastName":"Doe"},{"firstName":"Anna", "lastName":"Smith"},{"firstName":"Peter", "lastName":"Jones"}]}';
return $str;
}
echo testdata();
?>
编辑:我也必须更改您的 $str,单引号围绕键和值无效,我已将其更改为有效的双引号 "。
正如@charlietfl 所说,更好的做法是 json_encode 您的 JSON 回复而不是自己写。
您可以在post方法中发送您的函数名称,并在php页面上获取该方法,使用它您可以执行函数。
app.controller('customersCtrl', function($scope, $http) {
var request = $http.post('acctUpdate.php', {fun: "testdata"});
request.success(
function( html ) {
console.log(html);
}
); });