2016-04-05 17 views
-1

Ich arbeite derzeit an einem Beispielprojekt und bin mit Go und AngularJS Ich bin neu auf diesem. Ich habe nach der Ausführung dieser Codes eine 405 Fehler Methode nicht erlaubt gefunden.AngularJS und Go POST Request-Methode nicht erlaubt

Sample.js

var app = angular.module('sample', []); 
 
app.controller('sampleCtrl', function($scope, $http){ 
 
    $scope.submit = function(){ 
 
    //variables 
 
    $scope.firstName = document.getElementById('firstName').value; 
 
    $scope.middleName = document.getElementById('middleName').value; 
 
    $scope.lastName = document.getElementById('lastName').value; 
 
    $scope.age = document.getElementById('age').value; 
 
    $http({ 
 
\t \t \t method: 'POST', 
 
\t \t \t url: baseUrl +'/sample', 
 
\t \t \t headers: {'Content-Type': 'application/json'}, 
 
      data: { 
 
       "firstName" : $scope.firstName, 
 
       "middleName" : $scope.middleName, 
 
       "lastName" : $scope.lastName, 
 
       "age"   : $scope.age 
 
      } 
 
\t \t }).then(function successCallback(response){ 
 
       alert('Success'); 
 
\t }); 
 
    } 
 
});

sample.go

package controllers 

import (
    "github.com/astaxie/beego" 
    "net/http" 
    "fmt" 
    "encoding/json" 
) 
type SampleController struct { 
    beego.Controller 
} 

func (this *SampleController) Get(){ 
    this.TplName = "sample/sample.html" 
    this.Render() 
} 

type Entry struct { 
FirstName string 
MiddleName string 
    LastName string 
    Age int 
} 

func (this *SampleController) Submit(rw http.ResponseWriter, req *http.Request){ 
    decoder := json.NewDecoder(req.Body) 
    var data Entry 
    err := decoder.Decode(&data) 
    if err != nil { 
     fmt.Println("JSON Empty") 
    }else{ 
     var firstName = data.FirstName 
     //var middle = data.MiddleName 
     //var lastName = data.LastName 
     //var age = data.Age 
     fmt.Println(firstName) 
    } 
} 

routers.go

package routers 
 

 
import (
 
\t "test/controllers" 
 
\t "github.com/astaxie/beego" 
 
) 
 

 
func init() { 
 
    beego.Router("/", &controllers.MainController{}) 
 
\t beego.Router("/sample", &controllers.SampleController{}) \t beego.Router("/sample/Submit",&controllers.SampleController{},"post:Submit") 
 
}

Danke für die Hilfe im Voraus.

Antwort

0

Entfernen Sie BaseUrl und stellen Sie sicher url:"sample". Vielleicht können Sie dies tun console.log(baseUrl); Überprüfen Sie, dass baseUrl enthält #;

+0

es druckt meine virtuelle Host-URL http://bee.com immer noch den gleichen Fehler haben –

+0

@PatrickMarkMazo URL: "Beispiel/Submit" – Eric

+0

es sagt Seite nicht gefunden Fehler 404, wenn kompiliert. und das Terminal post einen Fehler bei der Verwendung dieser Art von URL. Das Senden ist eine Funktion unter dem Controller und keine Seite. –

0

Ich bin kein Go-Entwickler, aber mit Blick auf den Fehlercode scheint es, als ob Sie POST Anfrage machen, aber nur Routen für GET definiert haben.

+0

beego.Router ("/ Probe", & controllers.SampleController {}) \t beego.Router ("/ sample/Senden", & controllers.SampleController {}, "post: Senden") i eine definierte Route für die Zeit nach try sehen –

0

In Router u definiert hat „/ Probe“, wie erhalten, aber Sie einen Ajax-Aufruf für POST-Methode hergestellt, in dem Router seine Suche der für/Probe wird es diese

beego.Router („/ Probe“ finden, & controllers.SampleController {})

, die zu SampleController umleitet, aber dort findet es keine POST-Methodendefinition, also 405-Methode nicht gefunden.

Versuchen in samplecontroller Hinzufügen

func (das * SampleController) Post() { ... // Ihr Code geht hier }

oder fügen Sie

beego.Router ("/ sample ", & controllers.SampleController {" Beitrag: Beispiel "})

und fügen Sie eine Funktionsbeispiel in samplecontroller wie Sie für Submit