2015-12-30 46 views
1

我想提交提交symfony 2.8形式angularJS脚本形式不是通过angularjs

我symfony的形式树枝是如下:

<div ng-app="mediqApp" ng-controller="mediqController"> 
    {{ form_start(form, {'attr':{'id': 'mediForm', 'ng- submit':'processMediqForm()'}}) }} 
    {{ form_row(form.name, {'attr':{'ng-model':'formData.name'}}) }} 
    {{ form_row(form.description, {'attr':{'ng-model':'formData.description'}}) }} 
    <div><input type="submit" value="Save"/></div> 
    {{ form_end(form) }} 
</div> 

我的角的js脚本如下:

var mediqApp = angular.module("mediqApp", []).controller("mediqController",function($scope, $http, $log){ 
$scope.formData = {}; 
$scope.processMediqForm = function() { 
    $http({ 
     method : 'POST', 
     url  : "{{ path('medicine_new') }}", 
     data : $.param($scope.formData), 
     headers : { 'Content-Type': 'application/x-www-form-urlencoded' } 
     }) 
     .success(function(data) { 
      console.log(data.message); 
     }); 
    }; 
}); 

当我通过代码console.log($scope.formData)检查我的formData值时,我得到了像这样的输入值对象{name: "Crocin", description: "Help in Headache, little fever"}

但是,当我试图提交表单我收到的错误是这样的:

SyntaxError: Unexpected token < 
at Object.parse (native) 
at pc (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js:14:219) 
at Yb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js:76:201) 
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js:77:22 
at r (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js:7:302) 
at Wc (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js:77:4) 
at c (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js:78:109) 
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js:110:505 
at k.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js:124:325) 
at k.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js:121:427) 

我无法理解我在做什么错。

+0

您的网址是错误的:'网址:“{{路径(‘medicine_new’)}}”,',它应该是一个字符串,类似于:'url:“/ medicine/new”,' –

+0

这是可以的,因为在symfony2中传递了这个方法,最后我解决了我的问题,在formData中我传递了错误的证书。它是sved。非常感谢您的帮助! –

+0

那么,你错过了'AUTH'标题或类似的东西? –

回答

2

最后我通过以下步骤解决我的问题..

symfony中2.8创建类的一个新的即时,既newAction和createAction法合并,并且仅一个方法newMethod。

我再次将它们分解为newAction和createAction,就像之前的symfony版本一样。

在我的形式树枝

我这样做:

<div ng-app="mediqApp" ng-controller="mediqController"> 
    <form method="POST" action="#" name="mediForm"> 
    {{ form_start(form) }} 
    {{ form_row(form.name) }} 
    {{ form_row(form.description) }} 
    <div><input type="submit" value="Save" ng-click="processMediqForm()"/></div> 
    {{ form_end(form) }} 
    </form> 
</div> 

和angularjs脚本我这样做:

var mediqApp = angular.module("mediqApp", []).controller("mediqController",function($scope, $http, $log){ 
     $scope.processMediqForm = function() { 
      $http({ 
       method: 'POST', 
       url: "{{ path('medicine_create') }}", 
       data: $('form[name=mediForm]').serialize(), 
       headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
       }).success(function(response) { 
       $scope.result = response.data; 
       console.log($scope.result); 
       }); 
      } 
     }); 

我基本上是通过对输入数据的形式连载数据。现在,它工作得很好..

再次感谢所有为他们的意见...