data: {whattype: what, serialize: serialize}
요렇게 json형식으로 보내시면 됩니다.
그럼 서버단에서는
Request $req로 받을때
$data->$req→all();
$data['whattype'];
$data['serialize'];
로받으시면 됩니다.
그리고 csrf_token을 비활성화 시키시지 않으셨다면,
data: {whattype: what, serialize: serialize, '_token': '{{ csrf_token() }}'}
토큰추가 하셔야하는거 아시죠? post 니까요.
결론:
$.ajax({
method : 'post', //이거는 저는 method라고 쓰는데 type로 안해봐서 되는지안되는지 모름
url : address,
data: {whattype: what, serialize: serialize, '_token': '{{ csrf_token() }}'}, //laravel의 bladel엔진을 사용한다고 가정했을때 저렇게 써야함 blade 안쓰면 <?= csrf_token() ?> 을 사용해야함
success : function(data){
console.log(data);
}
});
제가 찾아보니 아실지는 모르겠는다 시리얼라이즈 함수를 사용해서 나온 쿼리스트링을 php내장함수인 parse_str 함수를 사용하면 배열로 바꿔준다네요.
저는 아직 고등학생이고 배우지못한것이 많으니 제가 작성한 방법보다 좋은 방법이 있으면 알려주시기 바랍니다.
답변 감사합니다!
답변 주신것 처럼 작성하니 콘솔에선 데이터가 나뉘어서 잘 나오는데
serialize 데이터는
"_token=eSOBs5dDiifQu3IAHzm1ontxw1epHZMC8Eod7ibi&phone=&name=&user_pass=&user_pass_check=&email="
이렇게 나와서 $data['serialize'][0] 처럼 데이터를 찍어서 뽑을수가 없는데 이문제도 알고계실까요,,,
split("$",$request→serialize);
와 같이 작성해도 500오류만 나오는데 ㅠㅠ
방법이 많네요
$data1 = $request->input('시리얼라이즈로 넘어온애 1번');
이런식으로 하나봐요
일단 폼에있는 토큰은 쓸모가 없습니다. 이유는 아실거라 생각합니다.
제가 질문을 제대로 이해했다면 뽑으실수 없는게 당연합니다.
jquery 함수 serialize()는 반환형이 '문자열'입니다. 제가 어제 작성해드린 코드에는 serialize()로 반환된 문자열을 serialize라는 이름으로 보낸것입니다. javascript와 php는 다른언어이기 때문에 배열의 전송이 불가능합니다. 따라서 json이라는 형식을 사용해야 합니다. json은 key value로 이루어진 배열? 비슷한 것이라고 보시면 됩니다. 저도 야메로 공부했기 때문제 정확한 정의같은것은 알려드릴수가 없지만 사용하실 때에는 javascript에서 배열이 보내고 싶으시면 JSON.stringify(arr) 로 문자열을 만들어서 서버단에 전송하신 후에 json_decode() 를 사용해서 json을 풀어서 사용 할 수 있습니다. 반대의 경우에는 json_encode() 를 사용하여 문자열로 만든후 javascript 에서 JSON.parse(arr)로 변환하여 배열처럼 사용할 수가 있습니다. 제가 data:{...} 이렇게 넣은것이 바로 json의 형태입니다. whattype이라는 key에 what이라는 변수를 value로 넣고 serialize이라는 key로 serialize라는 문자열을 넣은것입니다. 제가 json을 설명드리는 이유는 질문자님께서 form에 토큰을 빼시지 않으셨기 때문에 jquery의 serialize() 의 반환형과 json의 전송에 대해서 잘 모르시는것 같기 때문입니다.
정리해드리겠습니다.
split라는 함수는 javascript의 함수 아닌가요?
저는 php에서는 배열과 문자열을 가지고 왔다갔다할때는 implode나 explode를 사용합니다.
그리고 parse_str을 사용하시면 쉽게 query string를 풀어줍니다.
방법이야 많겠지만
serialize 하기전에
폼에 히든을 하나 추가 해주는 것도 방법입니다.
<form id='register'> <input type=text name='a' value='aa'> <input type=text name='b' value='bb'> </form> $(function() { var what = 'what' $("<input></input>").attr({type:"hidden", name:"what_type",value:what}).appendTo($('#register')); var serialize = $('#register').serialize(); alert(serialize); });
function check(what){
$('[what='+what+']').parent().next().children().attr('class','icon-spin4 animate-spin');
var address = "{{route('register.check')}}";
var serialize = $('#register').serialize();
var whattype = what;
$.ajax({
type : 'post',
url : address,what,
data : serialize, << 이 데이터와 함께 var whattype = what 으로 whattype 데이터를 같이 넘기고싶습니다
datatype : 'json',
success : function(data){
console.log(data);
}
})
}
check 란 함수에 what 이란 파라미터가 있는데요 serialize로 폼에있는 데이터와 위에 whattype <<이란 변수도 같이 넘기고 싶은데 어떤식으로 넘겨야될까요 ??