2013-11-15 3 views
15

Я пытаюсь вставить данные из переднего конца в mysql db с помощью angularjs. Но он не попадает в db, хотя сообщений об ошибках. Ниже приведен код, который я использую.Вставка данных с переднего конца в mysql db в angularjs

index.html

<html ng-app="demoApp"> 
    <head> 
     <title> AngularJS Sample</title> 
     <script src="js/angular.min.js"></script> 
     <script src="js/angular-route.min.js"></script> 
     <script type="text/javascript" src="js/script.js"></script> 
    </head> 
    <body> 
     <div class="container" ng-view> 
     </div> 
    </body> 
</html> 

script.js

demoApp.config(function ($routeProvider,$locationProvider) { 
    $routeProvider 
     .when('/', 
     { 
      controller: 'SimpleController', 
      templateUrl: 'Partials/view1.html' 
     }) 
     .when('/view2', 
     { 
      controller: 'SimpleController', 
      templateUrl: 'Partials/view2.html' 
     }) 
     .otherwise({redirectTo: '/'}); 
    }); 
    demoApp.controller('SimpleController',function ($scope,$http){ 
    $http.post('server/view.php').success(function(data){ 
     $scope.friends = data; 
    });; 
    $scope.addNewFriend = function(add){ 
     var data = { 
      fname:$scope.newFriend.fname, 
      lname:$scope.newFriend.lname 
     } 
     $http.post("server/insert.php",data).success(function(data, status, headers, config){ 
      console.log("inserted Successfully"); 
     }); 
     $scope.friends.push(data); 
     $scope.newFriend = { 
      fname:"", 
      lname:"" 
     }; 
    }; 
}); 

View1.html

<div class="container" style="margin:0px 100px 0px 500px;"> 
    Name:<input type="text" ng-model="filter.name"> 
    <br/> 
    <ul> 
     <li ng-repeat="friend in friends | filter:filter.name | orderBy:'fname'">{{friend.fname}} {{friend.lname}}</li> 
    </ul> 
    <br/> 
    <fieldset style="width:200px;"> 
     <legend>Add Friend</legend> 
     <form name="addcustomer" method="POST"> 
      First Name:<input type="text" ng-model="newFriend.fname" name="firstname"/> 
      <br/> 
      Last Name :<input type="text" ng-model="newFriend.lname" name="lastname"/> 
      <br/> 
      <button data-ng-click="addNewFriend()" name="add">Add Friend</button> 
     </form> 
    </fieldset> 
    <a href="#/view2" style="margin:auto;">Next</a> 
</div> 

и следующие является мой PHP файл

insert.php

<?php 
    if(isset($_POST['add'])) 
    { 
     $firsname=$_POST['firstname']; 
     $laname = $_POST['lastname']; 
     mysql_connect("localhost", "root", "") or die(mysql_error()); 
     mysql_select_db("angularjs") or die(mysql_error()); 
     mysql_query("INSERT INTO friends (fname,lname) VALUES ('$firsname', '$laname')"); 
     Print "Your information has been successfully added to the database."; 
    } 
?> 

Я знаю, что я делаю что-то глупое здесь. Я только начал изучать углы сегодня. , когда я пытаюсь использовать PHP-код с простым html для вставки в db, он работает отлично. Я не понимаю, что я делаю неправильно здесь. Надеюсь, кто-то поможет мне здесь

+0

Если php работает без углового, то мы можем скрыть его как причину, но вы должны использовать mysqli_ * или PDO, а не функции mysql_ *. Используя инструмент разработчика Chrome или аналогичный, вы можете увидеть, как XHR делает POST для вашего скрипта? Имеет ли значение значение «добавить»? Я не вижу, где вы устанавливаете значение «добавить», но я не знаком с угловым. Более подробную информацию о том, почему нельзя использовать mysql_ *, можно найти здесь [http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) – boodle

+1

Вы получаете обратный вызов или, по крайней мере, некоторый код ответа для кода запроса? –

+0

Определенно выглядит так, что вы не отправляете значение _POST ["add"], и поэтому не вводите if. – boodle

ответ

17

Ваш скрипт для вставки данных неверен. Заменить его следующим образом:

$http.post("server/insert.php",{'fstname': $scope.newFriend.fname, 'lstname': $scope.newFriend.lname}) 
     .success(function(data, status, headers, config){ 
      console.log("inserted Successfully"); 
     }); 

а также изменить php следующим образом.

$data = json_decode(file_get_contents("php://input")); 
$fstname = mysql_real_escape_string($data->fstname); 
$lstname = mysql_real_escape_string($data->lstname); 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("angularjs") or die(mysql_error()); 
mysql_query("INSERT INTO friends (fname,lname) VALUES ('$fstname', '$lstname')"); 
Print "Your information has been successfully added to the database."; 

Это сработало для меня, когда я попытался с кодом.

+2

он тоже работает здесь :) – StreetCoder

Смежные вопросы