gpt4 book ai didi

angularjs - 无法在 Go 中获取 Angular/Restangular 表单数据

转载 作者:IT王子 更新时间:2023-10-29 02:24:27 24 4
gpt4 key购买 nike

我有一个运行良好的 Go rest 服务,我可以使用 Chrome REST 插件获取表单数据。我需要将表单数据从我的 Angular 应用程序获取到服务,但到目前为止我无法弄清楚。

我的 Angular 代码:

<form name="myForm">
<div class="control-group" ng-class="{error: myForm.name.$invalid}">
<label>Drug Name</label>
<input type="text" name="drugName" ng-model="drug.name" required>
<span ng-show="myForm.drugName.$error" class="help-inline">
Required</span>
</div>
<a href="#/" class="btn">Cancel</a>
<button ng-click="save()" ng-disabled="isClean() || myForm.$invalid"
class="btn btn-primary">Save</button>
<button ng-click="destroy()" ng-show="project._id"
class="btn btn-danger">Delete</button>
</form>

我的 app.js CreateCtrl,我设置 RestangularProvider.setBaseUrl('/rest/v1');:

function CreateCtrl($scope, $location, Restangular) {
$scope.save = function() {
Restangular.all('drugs/').post($scope.drug).then(function(project) {
$location.path('/list');
});
}
}

在我的 Go 代码中,我使用的是 gorilla ,以下是相关部分:

http.Handle("/rest/v1/drugs/", drugs.MakeMuxer("/rest/v1/drugs/"));
func MakeMuxer(prefix string) http.Handler {

log.Println("**** drugs.MakeMuxer(): " + prefix);

var m *mux.Router

// Pass through the prefix if we have one.
if prefix == "" {
m = mux.NewRouter()
} else {
m = mux.NewRouter().PathPrefix(prefix).Subrouter()
}


m.HandleFunc("/", CreateDrug).Methods("POST")

// Everything else should 404.
//m.HandleFunc("/{path:.*}", gorca.NotFoundFunc)

return m
}

func CreateDrug(w http.ResponseWriter, r *http.Request) {

log.Println("**** CreateDrug.... ");
log.Println("drugName: " + r.FormValue("drugName"))
//c := appengine.NewContext(r)

}

我可以看到 POST 正在进入“CreateDrug”,但是 r.FormValue("drugName") 是空的(当我使用浏览器休息插件并设置“drugName”时它不是空的"到某个值。

最佳答案

您需要调用r.ParseForm()在调用 r.FormValue 之前。

//编辑

在查找 angularjs 之后,我注意到它以 json 格式发送数据,所以你必须使用 json.NewDecoder , example :

type Drug struct {
Name string `json:"drugName"`
}
func CreateDrug(w http.ResponseWriter, r *http.Request) {
defer r.Body.Close()
var d Drug
dec := json.NewDecoder(r.Body)
dec.Decode(&d)
log.Println("**** CreateDrug.... ")
log.Println("drugName:", d.Name)
}

关于angularjs - 无法在 Go 中获取 Angular/Restangular 表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24591870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com