当前位置: 首页 > 面试题库 >

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

公西修文
2023-03-14
问题内容

在我的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


 类似资料:
  • 问题内容: 我是一个相对较新的程序员,与他告诉我的一个合作伙伴交谈,他说在AJAX之前,他使用iframe来发送数据并更改内容(显然是在JavaScript的帮助下)。 我知道两者都是相似的技术,但是我没有找到描述其特征的文章, 与Iframe相比,AJAX有哪些优势? 编辑 我没有找到任何关于该技术的解释,但是我的搭档告诉我他将数据通过隐藏的iframe发布并提交iframe,听起来好像只需要刷

  • 我有一个Wicket页面,其中包含一些应该通过Ajax更新的组件。我有以下AjaxBehavior:

  • 问题内容: 该功能运行什么?它只会运行吗? 问题答案: setState()将按以下顺序运行函数: 如果您的组件正在接收道具,它将使用上述功能运行该功能。

  • 问题内容: 我将用户输入(在这种情况下,只是数量和产品代码)传递给php脚本,以通过ajax存储到会话数组中。我希望,每次用户单击“提交”并进行ajax调用时,数量和产品代码都会添加到会话数组中。但是现在发生的是,每次它更新会话中的现有数据时。因此,仅存在一对数据。 这是我的ajax脚本: 我的PHP sendToCart.php 问题答案: 每次进行ajax调用时,您都会覆盖会话变量。 您需要读

  • 问题内容: JSON代表javascript对象表示法(我确定您知道),所以为什么通过ajax发送json时,需要将其转换为字符串来发送?它仅仅是格式化的东西,还是什么? 它可能属于另一个地方,如果是这样,请告诉我,我将其关闭并移动。 显然,我不是在寻求意见,而是想知道实际的答案。 为了确保我很清楚,我了解JSON.stringify()的功能及其对应的JSON.parse()。我只想知道为什么需

  • 问题内容: 我正在尝试使此函数正常工作,该函数对参数进行请求,然后将responseText发送给该函数。 似乎只能做到(由于Firebug命令)。 这里是: 问题答案: 我解决了分配onload事件而不是onreadystatechange的问题: