我正在使用来自golang api的ajax检索数据,但是在ajax成功函数中,响应不返回用户数据,而golang将返回它。 下面是我正在使用的ajax:
$(document).ready(function(){
$.ajax({
url:"/api/v1/customer/:id",
type: "GET",
success: function(results){
console.log(results) //it will not retrieving the data
}
});
});
ajax的输出
//nothing
这是golang路由器:
Route{"GetFullCustomer", "GET", "/customer/:id", controller.GetCustomer}
// when I will hit this url then the function GetCustomer will run.
v1 := router.Group("/api/v1") // there is also grouping
以下是检索用户的功能:
func GetCustomer(c *gin.Context) {
t, _ := template.ParseFiles("index.html")
t.Execute(c.Writer, nil)
customerIdString := c.Param("id") //taking the id from url
customerId, err := strconv.Atoi(customerIdString)
mongoSession := config.ConnectDb()
collection := mongoSession.DB("customer").C("customercollection")
pipeline := []bson.M{
bson.M{"$match": bson.M{"_id": customerId}},
bson.M{"$lookup": bson.M{"from" : "address", "localField" : "_id", "foreignField": "user_id","as": "address" }},
// bson.M{"$project":bson.M{"_id":0}}
}
pipe := collection.Pipe(pipeline)
resp := []bson.M{}
err = pipe.All(&resp)
if err != nil {
fmt.Println("Errored: %#v \n", err)
}
c.JSON(200, gin.H{"data": resp})
}
通过点击localhost http://localhost:8080/api/v1/customer/1
的url终端的输出是:
[GIN] 2018/05/04 - 12:40:11 | 200 | 11.200709ms | ::1 | GET /api/v1/customer/1
[map[$match:map[_id:0]] map[$lookup:map[from:address localField:_id foreignField:user_id as:address]]]
[]
[GIN] 2018/05/04 - 12:40:11 | 200 | 6.986699ms | ::1 | GET /api/v1/customer/Person.png
[map[$match:map[_id:0]] map[$lookup:map[foreignField:user_id as:address from:address localField:_id]]]
[]
[GIN] 2018/05/04 - 12:40:12 | 200 | 1.619845ms | ::1 | GET /api/v1/customer/:id
问题是,golang url hit show over golang将动态获取/:id
并匹配数据,但ajax不会动态获取此id。所以我将如何解决我的问题。
答案 0 :(得分:2)
它可能会默默地失败。您需要在浏览器中查看开发人员工具。在Chrome中,有一个“网络”标签,显示有关每个AJAX请求的信息。 AJAX调用可能由于某种原因而失败,您需要找出错误是什么。您可能也会在“控制台”选项卡中看到它。
另外,只是注意到dataType设置为“html”,根据您描述的输出格式,这似乎不正确。它可能应该是“json”。
您应该处理AJAX请求中的失败,以便用户知道存在问题。以下是一些可以帮助您入门的代码:
$(document).ready(function(){
var promise = $.ajax({
url:"/api/v1/customer/:id",
type: "GET",
dataType: 'json'
});
promise.done(function(data) {
console.log(data);
});
promise.fail(function(jqXHR, textStatus, errorThrown) {
console.log("Request failed. jqXHR.status=" + jqXHR.status + ", textStatus=" + textStatus + ", errorThrown=" + errorThrown);
});
});