Jos*_*osh 5 javascript ajax jquery json laravel
我正在构建一个Laravel应用程序.在后端,$controller->wantsJson()
方法是TRUE
请求的内容类型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"
})
Run Code Online (Sandbox Code Playgroud)
这正确地触发了wantsJson()
我需要的响应.问题是jQuery无法application/json
正确提供POST数据.它尝试将其写为查询字符串,当它接收到该内容类型时,它不适用于PHP后端.
为了满足这一点,我需要将JavaScript对象数组字符串化到data
字段中.
JSON.stringify(dataObj)
Run Code Online (Sandbox Code Playgroud)
所以现在的问题是,我没有将多维表单转换为对象数组的简洁方法.如果我只是尝试转换输出$.serializeArray()
,我得到这个,这是后端无法解释的.
{
'something' : 1,
'field[foo]' : 2,
'field[bar][]' : "a",
'field[bar][]' : "b",
'field[bar][]' : "c",
}
Run Code Online (Sandbox Code Playgroud)
那当然不行.我需要某种可以转换此表单的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" />
Run Code Online (Sandbox Code Playgroud)
进......
{
'something' : 1,
'field' : {
'foo' : 2,
'bar' : [
'a',
'b',
'c',
]
}
}
Run Code Online (Sandbox Code Playgroud)
你会发现这样的东西已经存在,但我找不到任何令人满意的东西.
小智 8
我有同样的问题,但这个包做了诀窍:jQuery Serialize Object
它很容易使用,只需在表单上调用它(加载脚本后)
$('form#contact').serializeJSON(); // to get the form as a JS object
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6315 次 |
最近记录: |