Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 无法在Go中获取角度/重新角度表单数据_Angularjs_Go_Restangular_Gorilla - Fatal编程技术网

Angularjs 无法在Go中获取角度/重新角度表单数据

Angularjs 无法在Go中获取角度/重新角度表单数据,angularjs,go,restangular,gorilla,Angularjs,Go,Restangular,Gorilla,我有一个运行良好的Go-rest服务,我可以使用Chrome rest插件获取表单数据。 我需要从我的Angular应用程序中获取表单数据到该服务,但到目前为止我还无法解决 我的角度代码: <form name="myForm"> <div class="control-group" ng-class="{error: myForm.name.$invalid}"> <label>Drug Name</label> <inpu

我有一个运行良好的Go-rest服务,我可以使用Chrome rest插件获取表单数据。 我需要从我的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>
在我的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)

}
我可以看到帖子正在进入CreateDrug,但是r.FormValuedrugName是空的。当我使用浏览器rest插件并将drugName设置为某个值时,它不是空的。

在调用r.FormValue之前,您需要先调用

//编辑

在查找angularjs后,我注意到它以json的形式发送数据,因此您必须使用:


Thx的帮助…您能解释一下您在dec.Decode&d行中使用的位&d吗?Decode与Unmarshal一样,需要一个对对象的引用,以便它可以修改它/写入它,因此您可以使用&d来传递指针或使用d:=newdruge//或&druge{}。
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)

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