2013-09-24 29 views
1

我想使用AJAX将表单输入从页面发送到PHP函数,并将数据保存在多维数组中。应该没有页面重新加载,并且响应可以是简单的truefalse。在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> 

的JavaScript:

<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”应该是“按钮”。也许你可以看看有用的插件jQuery的 - jquery-form(http://malsup.com/jquery/form/) –

回答

1

你的函数的括号内不加入正确,请尝试使用此

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

您需要将连载FORMDATA转化为正确的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) 
}; 

与阿贾克斯发送

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

$_POST['action'] 
json_decode($_POST['json']); 
+0

$('#formEditBilling form')。serializeArray();工作炉排 –