【问题标题】:Cannot see POST array in response在响应中看不到 POST 数组
【发布时间】:2023-03-06 04:04:01
【问题描述】:

首先我有一个复选框列表

@foreach ($extras as $extra)
    <span class="button-checkbox">
    <button type="button" class="btn" value="{{ $extra->id }}" data-color="primary">
         {{ $extra->name.' - $'.$extra->amount}}
    </button>
    <input type="checkbox" name="extras[]" id="extras" class="hidden" />
    </span>
@endforeach

这些按钮充当复选框。后台有 JS 获取按钮值并将其添加到兄弟复选框值并将其标记为选中。我知道这是可行的,因为如果我运行$("[name='extras[]']").serializeArray(),我可以在控制台中看到extras[] 标记为选中并列出。

我有一个函数可以将表单数据发布到控制器服务器端,该控制器服务器端将对数据执行某些操作并发送回某些内容。

function updateTotals() {
    var url = "/reservation/updateTotals";
    //set hidden field that holds the selected property's name
    //$('#property_name').val($('#properties').text().trim());
    $.post(url, $("form").serializeArray())
        .done(function(data) {
            //console.log(data);
        })
    .fail(function() {
        alert("Error updating totals.");
    })
    .always(function() {
        //alert( "finished" );
    });
}

我有一个链接到控制器的路由: Route::post('reservation/updateTotals', 'ReservationController@updateTotals');

而现在我只是在使用 Controller 进行测试以获取我的数组数据:

public function updateTotals() {
    //get property
    $property = Property::findOrFail(Input::get('property_id'));

    //get extras
    return $extras = $_POST['extras'];

    //get discount
    $discount = Input::get('discount');
}

当我 return 只是 $_POST['extras']Input::get('extras') 时,我的回复一无所获。但是,如果我返回 $_POSTInput::all() 我会取回我所有的 **non-array* POST 数据。 extras 有一个字段,但它是空白的:,"extras":"",

我已经尝试将按钮全部删除,只使用复选框,仍然得到相同的结果。

我在这里缺少什么?我的问题可能是什么?

【问题讨论】:

    标签: php jquery arrays laravel checkbox


    【解决方案1】:

    您将Extras 定义为一个没有值的数组。换句话说,var Extras[]; 将声明一个数组,并为其赋予值 null;null; 尝试将检查定义为 vairbles,并将它们发送到 Extras 数组,它更高效且受支持。

    【讨论】:

    • 将检查定义为变量?您的意思是 .each() 通过检查并从每个变量中创建一个变量并将其全部推送到数组中吗?
    • @user2690363 这正是我的意思,我只是措辞奇怪。
    【解决方案2】:

    我不知道为什么,但是在发送到 $.post() 之前将我的序列化数组设置为 var 使一切正常(我的意思是 extras 数组在我的控制器中可见和可用,并且可以在响应中看到)。我不知道为什么,但对我来说绝对是这样。

    function updateTotals() {
        var data = $('form').serializeArray();
        var url = "/reservation/updateTotals";
    
        $.post(url, data)
            .done(function(data) {
                //do something
        })
        .fail(function() {
            alert("Error updating totals.");
        })
        .always(function() {
            //alert( "finished" );
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 2016-07-13
      • 1970-01-01
      • 2020-04-29
      • 2020-10-22
      相关资源
      最近更新 更多