Angularjs和jQuery不是我的正常简单的形式工作 [英] Angularjs and jquery not working in my regular simple form

查看:104
本文介绍了Angularjs和jQuery不是我的正常简单的形式工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我学习Angularjs和我创建简单的表格。其实我PHP开发人员,所以我preferred使用PHP作为服务器端脚本语言。我无法将数据提交给服务器,我试过很多方法,但这些都是非常复杂的,如果我试图在标准方法Angularjs不能正常工作,请检查我的code,并给我最好的方法与angularjs工作,jQuery的和PHP。帮帮我!

\r
\r

angular.module(mainModule,[])\r
  .controller(mainController功能($范围,$ HTTP){\r
    $ scope.person = {};\r
    $ scope.serverResponse ='';\r
\r
    $ scope.submitData =功能(){\r
      无功配置= {\r
        标题:{\r
          内容类型:应用程序/ x-WWW的形式urlen codeD\r
        }\r
      };\r
\r
      $ http.post(server.php,$ scope.person,配置)\r
        .success(功能(数据,状态,头,配置){\r
          $ scope.serverResponse =数据;\r
        })\r
        .error(功能(数据,状态,头,配置){\r
          $ scope.serverResponse =提交错误;\r
        });\r
    };\r
  });

\r

< PHP\r
 如果(使用isset($ _ POST [人))\r
  {\r
    // AJAX表单提交\r
    $ =人json_de code($ _ GET [人]);\r
\r
    $结果= json_en code(阵列(\r
      receivedName=> $&人 - GT;的名字,\r
      receivedEmail=> $&人 - GT;电子邮件));\r
  }其他\r
  {\r
    $结果=无效请求数据;\r
  }\r
\r
  回声$结果;\r
\r
?>

\r

<!DOCTYPE HTML>\r
< HTML和GT;\r
\r
< HEAD>\r
< /头>\r
\r
<机身NG-应用=mainModule>\r
  < D​​IV NG控制器=mainController>\r
    <表格名称=personForm1NOVALIDATE NG-提交=submitData()>\r
      <标签=名>首先名称:LT; /标签>\r
      <输入ID =名称类型=文本名称=名字吴模型=person.name要求/>\r
      < BR />\r
      {{person.name}}\r
      < BR />\r
      <标签=电子邮件>电子邮件:LT; /标签>\r
      <输入ID =电子邮件类型=文本名称=电子邮件NG模型=person.email数据香菜-TYPE =电子邮件要求/>\r
      < BR />\r
      < BR />\r
      <按钮式=提交>提交< /按钮>\r
    < /表及GT;\r
    < BR />\r
    < D​​IV>\r
      {{$ scope.serverResponse}}\r
    < / DIV>\r
  < / DIV>\r
\r
  &所述; SCRIPT SRC =htt​​ps://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js>&下; /脚本>\r
  &所述; SCRIPT SRC =htt​​ps://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js>&下; /脚本>\r
  <! - <脚本类型=文/ JavaScript的SRC =脚本/ parsley.js>< / SCRIPT>\r
  &所述; SCRIPT SRC =的script.js>&下; /脚本&GT - →;\r
< /身体GT;\r
\r
< / HTML>

\r

\r
\r


解决方案

更新,这是刚PHP和Apache测试code - 和它的作品。我也改变您的 server.php 文件象下面这样。该文件是基于AngularJS中心的服务器调​​用示例创建。同一消息来源被用来创建的 mainController.js $ http.post(...)方法调用,使其成功地张贴数据到服务器。

屏幕截图(提交后)

server.php

 < PHP
 如果($ _ SERVER [REQUEST_METHOD] ===POST)
  {   $结果=POST请求接受!  如果(使用isset($ _ GET [名称]))
  {
    $结果=\\ n名称=。 $ _GET [名称];
  }  如果(使用isset($ _ GET [电子邮件]))
  {
    $结果=\\ nemail =。 $ _GET [电子邮件];
  }  如果(使用isset($ HTTP_RAW_POST_DATA))
  {
    $结果=\\ DATA nPOST。 $ HTTP_RAW_POST_DATA;
  }  回声$结果;
  }?>

personForm.html

 <!DOCTYPE HTML>
    < HTML LANG =EN的xmlns =htt​​p://www.w3.org/1999/xhtml>
    < HEAD>
        <间的charset =UTF-8/>
        <标题>< /标题>    < /头>
        <机身NG-应用=mainModule>
            < D​​IV NG控制器=mainController>
                <表格名称=personForm1验证NG-提交=提交()>
                    <标签=名>首先名称:LT; /标签>
                    <输入ID =名称类型=文本名称=名字吴模型=person.name要求/>
                    < BR />
                    {{person.name}}
                    < BR />
                    <标签=电子邮件>电子邮件:LT; /标签>
                    <输入ID =电子邮件类型=文本名称=电子邮件NG模型=person.email要求/>
                    < BR />
                    < BR />
                    <按钮式=提交>提交< /按钮>
                < /表及GT;
                < BR />
                < D​​IV>
                    {{serverResponse}}
                < / DIV>
            < / DIV>            &所述; SCRIPT SRC =htt​​ps://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js>&下; /脚本>
            &所述; SCRIPT SRC =htt​​ps://ajax.googleapis.com/ajax/libs/angularjs/1.3.11/angular.min.js>&下; /脚本>
            &所述; SCRIPT SRC =mainController.js>&下; /脚本>
            <! - <脚本类型=文/ JavaScript的SRC =脚本/ parsley.js>< / SCRIPT>
            &所述; SCRIPT SRC =的script.js>&下; /脚本&GT - →;
        < /身体GT;< / HTML>

mainController.js

  angular.module(mainModule,[])
  .controller(mainController功能($范围,$ HTTP)
  {
  $ scope.person = {};  $ scope.serverResponse =;  $ scope.submit =功能()
  {      的console.log(形式提交);      VAR PARAMS = {
          名称:$ scope.person.name,
          电子邮件:$ scope.person.email
      };      无功配置= {
          params:一个PARAMS
      };      $ http.post(server.php,$ scope.person,配置)
      .success(功能(数据,状态,头,配置)
      {
          的console.log(数据+数据+状态+状态+头+ +头,配置+配置);
          $ scope.serverResponse =数据;
          的console.log($ scope.serverResponse);
      })
      .error(功能(数据,状态,头,配置)
      {的console.log(错误);
          $ scope.serverResponse =提交错误;
       });
      };
  }); // JavaScript源$ C ​​$ C

替代方式,用JSON处理:

server_json.php

 < PHP
  如果($ _ SERVER [REQUEST_METHOD] ===POST)
  {
     / * code来源:http://stackoverflow.com/a/22852178/2048391 * /
     $数据=阵列();
     $ JSON =的file_get_contents('PHP://输入'); //从原POST数据读取JSON     如果(!空($ JSON)){
        $数据= json_de code($ JSON,真正的); //德code
     }     的print_r($数据);    }  ?>

屏幕截图(提交后)

I am learning Angularjs and I created simple form. Actually i am PHP developer so i preferred to use php as a server side scripting language. I am unable to submit the data to server, i tried so many methods but those are very complex if i am trying in standard method Angularjs is not working please check my code, and give me best method to work with angularjs, jquery and php. help me!

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>

解决方案

Updated, this is code that was just tested with php and Apache - and it works. I also changed your server.php file like below. The file was created based on AngularJS Hub's Server Calls sample. The same source was used to create mainController.js' $http.post(...) method call so that it successfully posts data to the server.

Screenshot (after submit)

server.php

<?php
 if ($_SERVER["REQUEST_METHOD"] === "POST")
  {

   $result = "POST request received!";

  if (isset($_GET["name"]))
  {
    $result .= "\nname = " . $_GET["name"];
  }

  if (isset($_GET["email"]))
  {
    $result .= "\nemail = " . $_GET["email"];
  }

  if (isset($HTTP_RAW_POST_DATA))
  {
    $result .= "\nPOST DATA: " . $HTTP_RAW_POST_DATA;
  }

  echo $result;
  }

?>

personForm.html

   <!DOCTYPE html>
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8" />
        <title></title>

    </head>
        <body ng-app="mainModule">
            <div ng-controller="mainController">
                <form name="personForm1" validate ng-submit="submit()">
                    <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" required />
                    <br />
                    <br />
                    <button type="submit">Submit</button>
                </form>
                <br />
                <div>
                    {{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.3.11/angular.min.js"></script>
            <script src="mainController.js"></script>
            <!--<script type="text/javascript" src="script/parsley.js"></script>
            <script src="script.js"></script>-->
        </body>

</html>

mainController.js

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

  $scope.serverResponse = "";

  $scope.submit = function ()
  {

      console.log("form submit");

      var params = {
          name: $scope.person.name,
          email: $scope.person.email
      };

      var config = {
          params: params
      };

      $http.post("server.php", $scope.person, config)
      .success(function (data, status, headers, config)
      {
          console.log("data " + data + ", status "+ status + ", headers "+ headers + ", config " + config);
          $scope.serverResponse = data;
          console.log($scope.serverResponse);
      })
      .error(function (data, status, headers, config)
      { console.log("error");
          $scope.serverResponse = "SUBMIT ERROR";


       });
      };
  });// JavaScript source code

Alternative way, with JSON handling:

server_json.php

<?php
  if ($_SERVER["REQUEST_METHOD"] === "POST")
  {
     /* code source: http://stackoverflow.com/a/22852178/2048391 */
     $data = array();
     $json = file_get_contents('php://input'); // read JSON from raw POST data

     if (!empty($json)) {
        $data = json_decode($json, true); // decode
     }

     print_r($data);

    }

  ?>

Screenshot (after submit)

这篇关于Angularjs和jQuery不是我的正常简单的形式工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆