2016-05-16 90 views
0

在我的AngularJS应用程序中,输入表单的数据在点击提交按钮后并未存储在MySQL数据库中。成功提交表单数据后提醒表明它正在工作。另外,在点击提交按钮之后,我希望应用程序继续到下一个视图(#/ setup-step2) - 但它仍然在step1。未存储在MySQL中的AngularJS表单数据db

HTML部分(#/设置-步骤1):

<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"); 
          }) 

        } 
}]); 

设置-step1.php在文件夹/ 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(); 
?> 
+0

你看到任何在铬控制台?服务器日志中有什么? mysql日志? – rleir

+0

将控制台日志添加到问题 – YaeVo

回答

0

我自己找到了答案。问题是不正确的PHP和MySQL语法。以现在的方式更新代码。

0

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

第二, 只是保持你的setup-step1.php.php内的PHP代码。你不需要任何HTML代码,因为它只会返回你的请求的结果。

三, 据我所知,由于服务器占主导地位和网站域名不同,您无法更改网页的位置。您需要将用户重定向到另一个页面。你可以使用$ location或$ state来找到在angularjs中重定向的方法。

+0

Tbh我从来没有听说过cors。如果在同一台服务器上的另一个简单的html表单(没有angularjs或任何)成功执行php请求并将数据存储在MySQL数据库中,这仍然适用吗? – YaeVo

+0

如果它们在同一台服务器上。仅当服务器端和客户端位于不同的域中时才应用Cors。 – Yepo