在我的 AngularJS 应用程序中,点击提交按钮后,输入表单的数据不会存储在 MySQL 数据库中。然而,成功提交表单数据后的警报表明它正在工作。
此外,点击提交按钮后,我希望应用程序继续到下一个 View (#/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();
?>
最佳答案
首先, 确保在向服务器执行任何请求之前启用 cors。当您使用 angularjs 时,这通常意味着您正在向服务器发出 cors 请求。如果您没有启用 cors 选项,则无法从服务器调用任何方法因为这是不允许的。
第二, 只需将 php 代码保留在 setup-step1.php 中即可。您不需要任何 html 代码,因为它只会返回您的请求结果。
第三, 据我所知,您无法从服务器更改网页的位置,因为服务器域名和网站域不同。您需要将用户重定向到 AngularJS 中的另一个页面。您可以使用 $location 或 $state 找到在 AngularJS 中重定向的方法。
关于php - AngularJS 表单数据未存储在 MySQL 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37261644/