簡體   English   中英

使用AJAX將表單輸入發送到PHP

[英]Send form inputs with AJAX to PHP

我想使用AJAX將表單輸入從頁面發送到PHP函數,並將數據保存在多維數組中。 不應重新加載頁面,並且響應可以是簡單的truefalse 在Chrome瀏覽器中,我可以在JSON的“請求有效負載”元素中看到兩個輸入,但是如何才能在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;
}

您的功能括號未正確連接,請嘗試使用此功能

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
        }
    });
}

您需要將序列化的表格數據轉換為正確的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)
};

用ajax發送

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']);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM