2013-09-24 3 views
1

AJAX를 사용하여 페이지의 폼 입력을 PHP 함수로 보내고 다차원 배열에 데이터를 저장하려고합니다. 페이지 리로드가 없어야하며 응답은 단순한 true 또는 false 일 수 있습니다. Chrome 브라우저에서 JSON의 "Request Payload"요소에서 두 입력을 볼 수 있지만 PHP에서 데이터를 검색하고이 데이터를 배열로 변환하는 방법은 무엇입니까?AJAX에서 PHP로 폼 입력 보내기

HTML :

<div id="formEditBilling"><form> 
<input name="register[personal][firstname]" type="text" id="firstname" value="" class="text required " placeholder="Firstname"> 
<input name="register[personal][lastname]" type="text" id="lastname" value="" class="text required " placeholder="Lastname"> 
<input type="buttom" id="editBilling" value="speichern"/></form></div> 

자바 스크립트 :

<script type="text/javascript"> 

$('#editBilling').click(function() { 
    editBilling(); 
}); 


function editBilling(){ 

    var url = '/checkout/saveAddress'; // Server Function 

    var data = $('#formEditBilling form').serializeArray(); 
    data = JSON.stringify(data); 

    $.ajax({ 
     'type': 'post', 
     'async': false, 
     'data': data, 
     'url': url, 
     'contentType': "application/json", 
     'dataType': "text", 
     'success': function (result, data) { 

    $('.output').html(data); // Output Div 
} 
}); 
} 
</script> 

여기 내 문제입니다.

['register'] => Array 
    ( 
     ['personal'] => Array 
       (
         ['firstname'] => "Michael" 
         ['lastname'] => "Cooper" 

    ) 

PHP : 어떻게 같은 배열을 얻을 수 있습니다 여기 내 시도하지만 그것이 작동하지 않습니다, $_POST는 비어있는 것으로 보인다.

public function saveAddressAction(){ 

    $data = json_decode(stripslashes($_POST['register'])); 

    return true; 
} 
+0

입력시 입력 유형이 잘못되었습니다. "buttom"은 "button"이어야합니다. 그리고 아마도 jquery - jquery-form (http://malsup.com/jquery/form/) –

답변

1
함수의 괄호가 제대로 결합되지

사용하려고이

당신은 아약스와 함께 보낼 올바른 JSON

var formdata = $('#formEditBilling form').serializeArray(); 

var formobject = {}; 

$(formdata).each(function (e) { 
    formobject[formdata[e].name] = formdata[e].value; 
}); 
var data = { 
    action: action, 
    json: JSON.stringify(formobject) 
}; 

로 직렬화 formdata을 변환 할 필요가

function editBilling(){ 

    var url = '/checkout/saveAddress'; // Server Function 

    var data = $('#formEditBilling form').serializeArray(); 
    data = JSON.stringify(data); 

    $.ajax({ 
     'type': 'post', 
     'async': false, 
     'data': data, 
     'url': url, 
     'contentType': "application/json", 
     'dataType': "text", 
     'success': function (result, data) { 
      $('.output').html(data); // Output Div 
     } 
    }); 
} 
+0

에 대한 유용한 플러그인을 살펴볼 수 있습니다 감사하지만 이건 내 문제를 만들 때 복사 및 붙여 넣기 문제가있었습니다. –

1

function send(data) { 
    var deferred = $.ajax({ 
     method: "post", 
     url: settings.ajaxURL, 
     dataType: "json", 
     data: data 
    }); 
    return deferred.promise(); 
} 

send(formdata).done(function(response){ 
    console.log(response) 
} 

PHP가있는 캐치

+0

$ ('# formEdit 결제 양식'). serializeArray(); 창살을 일다 –