【问题标题】:AngularJS form data not stored in MySQL dbAngularJS 表单数据未存储在 MySQL 数据库中
【发布时间】:2016-05-16 19:21:24
【问题描述】:

在我的 AngularJS 应用程序中,输入表单的数据在点击提交按钮后不会存储在 MySQL 数据库中。然而,成功提交表单数据后的警报表明它正在工作。

另外,在点击提交按钮后,我希望应用程序继续到下一个视图 (#/setup-step2) - 但它仍停留在第 1 步。

html部分(#/setup-step1):

<form ng-submit="submitForm1()">
Job title: <input type="text" name="jobtitle" ng-model="formData1.jobtitle">
Vacancy ID: <input type="text" name="vacancyid" ng-model="formData1.vacancyid">
<button type="submit" class="animatedbutton"> Proceed </button>
</form>

controller.js:

var ctr = angular.module('myApp.controller', []);
ctr.controller
('Step1Controller', ['$scope', '$routeParams', '$http', function($scope, $routeParams, $http){
 $scope.formData1 = {};
                        $scope.submitForm1 = function() {
                        $http({
                            method: 'POST',
                            url: 'php/setup-step1.php',
                            data: $.param($scope.formData1),
                            headers: { 'Content-Type': 'application/x-www-form-urlencoded'}
                        })
                            .success(function(data){
                                console.log(data);
                                alert("It worked");
                            })
                            .error(function(data) {
                                console.log(data);
                                alert("It didn't work");
                            })

                    }
}]);

文件夹/php中的setup-step1.php:

<?php
include_once('db.php');
// Check connection
if(mysqli_connect_errno())
  {echo '<p>Connection to MySQL server failed: '.mysqli_connect_error().'</p>';}
else
  {echo '<p>Connection to MySQL server successful.</p>';}

$_POST = json_decode(file_get_contents("php://input"), true);

if (empty($_POST['jobtitle'])) 
   {$errors['jobtitle'] = 'Job title is required.';}
else {
// Escape user inputs for security
   $jobtitle = $_POST['jobtitle'];
   $vacancyid = $_POST['vacancyid'];
   $data = "INSERT INTO campaign (Job_title, Job_id) VALUES ('$jobtitle','$vacancyid')";mysql_query("INSERT INTO campaign (Job_title, Job_id) VALUES ('$jobtitle', '$vacancyid')");}

if ($connect->query($data) === TRUE) 
   {$conn->close();} 
else 
   {echo "Error: " . $sql . "<br>" . $conn->error;}

exit();
?>

【问题讨论】:

  • 您在 chrome 控制台中看到什么了吗?服务器日志中有什么? mysql日志?
  • 将控制台日志添加到问题中

标签: php jquery mysql angularjs


【解决方案1】:

首先, 确保在对服务器执行任何请求之前启用 cors。当您使用 angularjs 时,这通常意味着您正在向服务器发出 cors 请求。如果您没有启用 cors 选项,则无法从服务器调用任何方法因为这是不允许的。

第二, 只需将 php 代码保留在 setup-step1.php 中即可。您不需要任何 html 代码,因为它只会返回您请求的结果。

第三, 据我所知,您无法从 erver 更改网页的位置,因为服务器域和网站域不同。您需要将用户重定向到 angularjs 中的另一个页面。你可以通过 $location 或 $state 在 angularjs 中找到重定向的方法。

【讨论】:

  • Tbh 我以前从未听说过 cors。如果同一服务器上的另一个简单的 html 表单(没有 angularjs 或其他)成功执行 php 请求并将数据存储在 MySQL 数据库中,这是否仍然适用?
  • 如果他们在同一个服务器上。仅当服务器端和客户端位于不同的域中时才应用 Cors。
【解决方案2】:

我自己找到了答案。问题是不正确的 php 和 mysql 语法。更新了代码现在的工作方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-11
    • 2021-03-16
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    相关资源
    最近更新 更多