无法运行php代码,有角度路由问题

Cannot run php code, issue with angular routing

本文关键字:路由 问题 运行 php 代码      更新时间:2023-09-26

我在搜索关于这个问题的帮助时遇到了这个早期的线程,但没有响应,所以我不知所措。

我正在尝试提交一个表单,并收到一个php变量作为回报。我自己运行测试代码没有问题,但当把它放在启用路由的角度应用程序中时,我不会得到任何结果。在路由页面上单击提交不会导致任何事情发生。我能做些什么来解决这个问题吗?

这是我的代码:

HTML+PHP-

<form method="post">
    <input type="submit" value="Submit" name="submit">
</form>
<?php if (isset($_POST['submit'])) {
    echo "IF GOOD :)";
} else {
    echo "ELSE BAD :(";
}?>

HTML

<div ng-app="app">
    <div ng-view></div>
</div>

JS-

var app = angular.module('app', ['ngRoute']);
app.config(function ($routeProvider) {
    $routeProvider
        .when('/', {
            templateUrl: 'pages/begin.html',
            controller: 'mainController',
            activePage: 'begin'
        });
});

仅将php用于数据插入/更新/删除。其他使用角度处理一切

试试这个

bengin.html

<form >
    <input type="submit" value="Submit" name="submit" ng-click="submit()">
</form>

主控制器

$scope.submit=function(){
  $http.post('msg.php', {submit:'hello word!'}).
  success(function(data, status, headers, config) {
    // this callback will be called asynchronously
    // when the response is available
  });
}

创建文件名msg.php

msg.php

<?php if (isset($_POST['submit'])) {
    echo "IF GOOD :)";
} else {
    echo "ELSE BAD :(";
}?>

您必须为<form>提供action=""属性才能使代码正常工作。

来自手册:

由于表单在客户端Angular应用程序中的作用是与传统的往返应用程序不同浏览器不将表单提交转换为整页重新加载其将数据发送到服务器。取而代之的是一些javascript逻辑应触发以处理特定于应用程序的方式。

因此,Angular阻止默认操作(表单提交到服务器),除非元素具有action属性指定。

然而,Angular鼓励您使用ngSubmit和ajax请求,因为它们不会导致页面重新加载。