我正在构建一个Laravel应用程序。在后端,如果请求的内容类型为TRUE
,则$controller->wantsJson()
方法为application/json
。因此,为了满足这一要求,我的jQuery AJAX调用如下。
jQuery.ajax({
type: "POST",
method: "PUT",
url: $form.attr('action'),
data: $form.serialize(),
dataType: "json",
contentType: "application/json; charset=utf-8"
})
这正确地触发了我需要的wantsJson()
响应。那么问题就出在jQuery不能以application/json
的形式正确地提供POST数据。它试图将其写成一个查询字符串,当它接收到该内容类型时,这对PHP后端不起作用。
为了满足这一要求,我需要在data
字段中添加一个JavaScript对象数组。
JSON.stringify(dataObj)
所以现在的问题是,我没有一种简明的方法将多维形式转换为对象数组。如果我只是尝试转换$.serializeArray()
的输出,我会得到这样的结果,这是后端无法解释的。
{
'something' : 1,
'field[foo]' : 2,
'field[bar][]' : "a",
'field[bar][]' : "b",
'field[bar][]' : "c",
}
这当然是行不通的。我需要某种类型的RegEx解析器,可以转换此形式...
<input name="something" value="1" />
<input name="field[foo]" value="2" />
<input name="field[bar][]" value="a" />
<input name="field[bar][]" value="b" />
<input name="field[bar][]" value="c" />
变成..。
{
'something' : 1,
'field' : {
'foo' : 2,
'bar' : [
'a',
'b',
'c',
]
}
}
你可能认为这样的东西已经存在了,但我找不到任何令人满意的东西。
https://stackoverflow.com/questions/32686855
复制相似问题