Angularjs 和 jquery 无法以我常规的简单形式工作

2024-03-10

我正在学习 Angularjs 并创建了简单的表单。实际上我是 PHP 开发人员,所以我更喜欢使用 php 作为服务器端脚本语言。我无法将数据提交到服务器,我尝试了很多方法,但是如果我尝试使用标准方法 Angularjs 不起作用,那么这些方法会非常复杂,请检查我的代码,并给我使用 angularjs、jquery 和 php 的最佳方法。帮我!

angular.module("mainModule", [])
  .controller("mainController", function($scope, $http) {
    $scope.person = {};
    $scope.serverResponse = '';

    $scope.submitData = function() {
      var config = {
        headers: {
          "Content-Type": "application/x-www-form-urlencoded"
        }
      };

      $http.post("server.php", $scope.person, config)
        .success(function(data, status, headers, config) {
          $scope.serverResponse = data;
        })
        .error(function(data, status, headers, config) {
          $scope.serverResponse = "SUBMIT ERROR";
        });
    };
  });
<?php
 if (isset($_POST["person"]))
  {
    // AJAX form submission
    $person = json_decode($_GET["person"]);

    $result = json_encode(array(
      "receivedName" => $person->name,
      "receivedEmail" => $person->email));
  }  else
  {
    $result = "INVALID REQUEST DATA";
  }

  echo $result;

?>
<!DOCTYPE html>
<html>

<head>
</head>

<body ng-app="mainModule">
  <div ng-controller="mainController">
    <form name="personForm1" novalidate ng-submit="submitData()">
      <label for="name">First name:</label>
      <input id="name" type="text" name="name" ng-model="person.name" required />
      <br />
      {{person.name}}
      <br />
      <label for="email">email:</label>
      <input id="email" type="text" name="email" ng-model="person.email" data-parsley-type="email" required />
      <br />
      <br />
      <button type="submit">Submit</button>
    </form>
    <br />
    <div>
      {{$scope.serverResponse}}
    </div>
  </div>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
  <!--<script type="text/javascript" src="script/parsley.js"></script>
  <script src="script.js"></script>-->
</body>

</html>

从您的代码看来您误解了一些概念。

  1. 你根本没有使用 jQuery - 你可以删除它,除非 parsely (不熟悉这个......)需要它
  2. DOCTYPE应该在根内部html标签。建议在底部添加JSbody标签将(概念上)有助于页面加载性能。
  3. 您导入的 JS 的顺序很重要,并且应该按依赖关系进行(例如:AngularJS 仅当包含 jQuery 时才可以使用 jQuery,但在您的情况下,Angular 不知道它,因为 jQuery 是在 AngularJS 之后添加的,这会导致 Angular 构建其 jq lite反而)
  4. 您添加了一个submitData到您的控制器的范围,但您从未调用它 - 您的意图可能是在用户提交表单时使用它,因此您需要删除action and method表单中的属性并添加ng-submit: <form name="personForm1" method="post" novalidate ng-submit="submitData(person, 'thePropNameOnWhichYouWantToSaveTheReturnedData')">。这两个参数都是多余的,因为它们都在$scope.
  5. The config参数发送与$http服务用于配置,而不是数据。阅读此处:角度 $http https://docs.angularjs.org/api/ng/service/%24http
  6. 的默认行为$http正在发送 JSON 作为请求的正文。您似乎希望 PHP 代码中有一个表单。这可以在config例如,或者您可以学习如何在 PHP 中反序列化 JSON(抱歉,我不懂 PHP)。
  7. 将要保存数据的属性添加到$scope所以它可以被渲染。

固定客户端代码建议:

angular.module("mainModule", [])
  .controller("mainController", function($scope, $http) {
    $scope.person = {};
    $scope.serverResponse = '';

    $scope.submitData = function() {
      // Let's say that your server doesn't expect JSONs but expects an old fashion submit - you can use the `config` to alter the request
      var config = {
        headers: {
          "Content-Type": "application/x-www-form-urlencoded"
        }
      };

      $http.post("server.php", $scope.person, config) // You can remove the `config` if the server expect a JSON object
        .success(function(data, status, headers, config) {
          $scope.serverResponse = data;
        })
        .error(function(data, status, headers, config) {
          $scope.serverResponse = "SUBMIT ERROR";
        });
    };
  });
<!DOCTYPE html>
<html>

<head>
</head>

<body ng-app="mainModule">
  <div ng-controller="mainController">
    <form name="personForm1" novalidate ng-submit="submitData()">
      <label for="name">First name:</label>
      <input id="name" type="text" name="name" ng-model="person.name" required />
      <br />
      {{person.name}}
      <br />
      <label for="email">email:</label>
      <input id="email" type="text" name="email" ng-model="person.email" data-parsley-type="email" required />
      <br />
      <br />
      <button type="submit">Submit</button>
    </form>
    <br />
    <div>
      {{$scope.serverResponse}}
    </div>
  </div>

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
  <!--<script type="text/javascript" src="script/parsley.js"></script>
  <script src="script.js"></script>-->
</body>

</html>

您还应该阅读更多关于AngularJS 文档 https://angularjs.org/也许可以做他们的完整教程。这非常有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angularjs 和 jquery 无法以我常规的简单形式工作 的相关文章

随机推荐

  • C# 中 if 语句的性能 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我只是想确定在具有大量迭代的循环中使用每个 if 语句对 C 应用程序性能的影响 我还没有找到与此相关的主题 因此我创建了这个主题 对于测试
  • 如何使用 MOQ 对象测试 Ninject ConstructorArguments?

    我最近一直在做我的第一个测试驱动开发项目 并一直在学习 Ninject 和 MOQ 这是我第一次尝试这一切 我发现 TDD 方法发人深省 Ninject 和 MOQ 也很棒 我正在从事的项目并不是特别适合 Ninject 因为它是一个高度可
  • 有没有正确的方法来取消异步任务?

    我遇到了如何正确取消异步任务的问题 这是一些草稿 我的入口点运行两个异步任务 第一个任务做了一些 长时间 的工作 第二个任务取消了它 入口点 private static void Main var ctc new Cancellation
  • 如何使 jQuery 自动完成列表在焦点上显示所有选项并在选择选项后隐藏?

    我有一个带有自动完成功能的表单 它会启动 onfocus 搜索 并在用户单击搜索字段时显示选项列表 即使他们没有输入任何内容 问题是自动完成需要使用键盘选择选项 向下箭头后按制表符 回车键或双击 我的第一个想法是 单击一下即可使焦点保留在搜
  • 当我没有 Mac 时,在 Mac/Safari 上测试 Web 应用程序 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 最近 我启动的一个网站在 Windows 上的 IE Firefox Chrome 和 Safari 上
  • 从 Facebook 返回的 X-FB-DEBUG 标头是什么?

    我想知道上面提到的标题是什么 当我对 Facebook 进行 JSONP 调用时 或者甚至当我只是访问时 它会包含在响应中http static ak fbcdn net http static ak fbcdn net 我在 facebo
  • 拖放导致的 WPF 内存泄漏

    使用 Red Gate 工具 我们检测到 System Windows DataObject 持有对拖拽对象 框架元素 的引用 该拖拽对象长期在完成的操作中徘徊 DragDrop DoDragDrop 一次后如何 清除 拖动对象 有没有办法
  • 当涉及多个设备时,核心数据 iCloud 迁移会“丢失”数据

    我最近在更新我的应用程序时遇到了一些重大问题 许多用户抱怨迁移到最新版本后数据丢失 几个小时后 我仍然不确定发生了什么 但我有一个理论想要证实 苹果在文档中说 迁移和 iCloud 对于与给定 NSPersistentStoreUbiqui
  • 导入错误:无法导入名称“LatentDirichletAllocation”

    我正在尝试导入以下内容 from sklearn model selection import train test split 并出现以下错误 这是堆栈跟踪 ImportError Traceback most recent call l
  • for的递归

    我花了很长时间试图弄清楚如何做到这一点 但它没有按预期工作 我正在编写一个有 1 到 k 个数字的代码 我需要找到所有可能的组合而不重复 例如对于 3 1 2 3 12 13 计算 4 位数字 1 2 3 4 5 的示例 int k 5 f
  • 如何编写更新查询来更新mongodb中的多个字段?

    如何编写此更新查询来更新 C 中的 mongo 记录 db collection update S Id 110 Name Name1 Batch 43 Date 9 2 2011 Status 0 我正在尝试这样 IMongoUpdate
  • cv::Mat 矩阵,如何减少 cv::Mat 中小数点右侧的数字?

    我有一个应用程序可以在 iPhone 屏幕上打印 3x3 cv Mat 我需要减少小数位 因为屏幕不太大 请参阅 1 004596557012473 0 003116992336797859 5 936915104939593 0 0072
  • 统计每天、上周和上个月的访客点击量

    我制作了一个包含文章的网站 我想计算每篇文章的浏览量以显示最受欢迎的文章 今天 本周和本月 您将如何为此制定数据库架构 如果知道一篇文章的显示次数就足够了 您可以使用如下内容 daily article views article id v
  • JCA 1.6 ResourceAdapter 是否需要 ManagedConnectionFactory?

    我写了一个之前的JCA资源适配器 http code google com p drools jca 然而 现在我发现自己不得不写一篇文章来访问BootstrapContext及其相关的WorkManager 并且有效地没有其他原因 如果我
  • getElementsByTagName 不起作用?

    在下面的代码中 我通过使用 javascript 动态分配 偶数 类给所有偶数行应用不同的背景颜色 我正在调用 body 标记的 alternamte 函数 onload 起初 我使用 getElementById 来获取表对象 并且我的代
  • FIREBASE 警告:用户回调引发异常。错误:发送后无法设置标头

    我们正在开发一个应用程序 我们使用 Firebase 作为数据库 并使用 Express 作为中间件 后端来路由我们的 RESTful API 该 API 供我们在 Reactjs 中开发的前端使用 下面是我们的 server js 文件的
  • 使用 REST Api,如何在我的类型请求模型中包含“任何类型的 json”?

    我正在使用 NET Framework 和 ASP NET Core 创建 REST Web Api 此 Web API 有一个调用 用于获取请求模型以保存数据 以及一些调用 用于稍后检索数据 大多数数据是我在后端需要的结构化信息 它们被保
  • Java 可重入锁和条件 |生产者完成工作,消费者陷入困境

    一般信息 三个读取器线程从文件中随机读取块 每个块都有一个 ID 然后写入普通的 ArrayList 一旦具有所需 ID 的块被添加到列表中 写入线程就会写入输出文件 因此 我编写了一个 BlockingChunkList 它应该同步 ad
  • 为什么 Firefox 拒绝 ttf 字体

    我有来自网络的 ttf 字体 它们在 ftp 客户端 目录中列为 Windows ttf 字体 我在 Mac OSX 平台上的 Firefox 上使用嵌入字体 但收到以下 Web 控制台错误 17 59 49 201 downloadabl
  • Angularjs 和 jquery 无法以我常规的简单形式工作

    我正在学习 Angularjs 并创建了简单的表单 实际上我是 PHP 开发人员 所以我更喜欢使用 php 作为服务器端脚本语言 我无法将数据提交到服务器 我尝试了很多方法 但是如果我尝试使用标准方法 Angularjs 不起作用 那么这些