我正在进行表单提交,并希望将表单信息传递给控制器,但是当我执行serializeArray
时,我无法访问控制器中的任何信息。
<form class="#" action="#" method="post" id="addLink">
<input class="form-control full-width" type="text" name="link"></input>
<input type="submit" value="Add">
</form>
$('#addLink').on('submit', function(e) {
e.preventDefault();
var ser = $(this).serializeArray();
var csrf = "{{ csrf_token() }}"
$.ajax({
url: '/profile/addlink',
type: 'post',
dataType: 'json',
headers: {
'X-CSRF-TOKEN': csrf,
},
data: {
"_token": csrf,
data : ser
},
success: function(data) {
console.log(data)
},
error: function(data){
console.log('error');
},
});
});
控制器
public function addLink(Request $request)
{
$result = json_encode($request->data, true);
echo json_encode($result);
}
结果:
[{"name":"link","value":"http:\/\/test.com"}]
我想提取'链接'
答案 0 :(得分:2)
您需要json_decode()
来提取值,在发送数据时,您应该使用JSON.stringify()
。所以代码应该是:
JS代码:
data: JSON.stringify(ser);
PHP代码:
$result = json_decode($request->data, true);
print_r($result); // array of values
答案 1 :(得分:1)
您可以在JS中使用serialize()
而不是serializeArray()
var ser = $(this).serialize();
导致以
的格式发送数据link=value
在您的控制器中,您可以使用parse_str()
link
parse_str($request->data, $output);
echo $output['link']; // Here you could get the link's value