在我的Ajax代码中,我正在向go lang api发送一个关联数组,但是go lang不会接收任何数组。为什么?
for (var i = 1; i <= optionsArr; i++) { span_arr.push({ day : valueSelected, time_slug : i, timing : $("#"+i).text(), count : $('#select_count'+i).val() }); } console.log(span_arr[1].time_slug); $.ajax({ url:"/api/v1/provider_spot", type:"POST", data:{span_arr:span_arr}, dataType:"json", success:function(response){ console.log(response); } });
为什么这个Ajax不会将数组发送到Go API?在下面的mvc结构中,我想要接收此数据:
Route{"SaveProviderSpot", "POST", "/provider_spot", controller.SaveProviderSpot}, func SaveProviderSpot(c *gin.Context) { fmt.Println(c.PostForm("span_arr")) }
您不能直接将数组从客户端发送到服务器,因为数组定义在两侧可能不相同。
有两种解决方法:
一个。您可以在clinet中将数组转换为json字符串,然后将其作为字符串参数发送到服务器,在服务器端,您可以解析并将其转换为数组
b。迭代数组,并使用一些特殊字符将其转换为字符串,并将其作为字符串参数传递给服务器,示例如下:
var dataStr = ""; for (var i = 1; i <= optionsArr; i++) { //each array element split with 3 semicolons,and each property in element split with 2 semicolons dataStr += valueSelected + ";;" + i + ";;" + $("#"+i).text() + ";;" + $('#select_count'+i).val() + ";;;"; } $.ajax({ url:"/api/v1/provider_spot", type:"POST", data:{dataStr:dataStr}, dataType:"json", success:function(response){ console.log(response); } }); //now it is correct