drag2458 2018-07-09 09:37
浏览 47
已采纳

为什么数组不会通过ajax调用发送?

In my ajax code I'm sending an associative array to the go lang api but go lang would not receiving any array. Why?

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

Why this ajax will not sending the array to the go api? Here in go lang following mvc structure I want to receiving this data:

 Route{"SaveProviderSpot", "POST", "/provider_spot", controller.SaveProviderSpot},

 func SaveProviderSpot(c *gin.Context) {
   fmt.Println(c.PostForm("span_arr"))
 }
  • 写回答

1条回答 默认 最新

  • dongsimang4036 2018-07-09 10:01
    关注

    You can not send an array directly from client to server,due to the array definition may not be the same in both sides.

    Two ways to solve it:

    a. You can convert the array into a json string in the clinet,then send it to server as a string parameter,in the server side,you can parse it and convert it to array

    b. Iterate the array,and convert it to a string using some special characters,also pass to server as string parameter,an example is as below:

    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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统