如何解析AJAX传递的对象?

时间:2019-11-18 06:56:45

标签: ajax laravel

我向Laravel函数发出了一个Ajax POST请求,但是我面临着这个结果:

<script> Sfdump = window.Sfdump || (function (doc) { var refStyle = doc.createElement('style')

当我死掉并转储我的数据以查看我从ajax请求中得到什么时,就会发生这种情况。我有这个jquery方法:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }

});

$('#save-person').on('click', function() {
    let first_name = $('#first_name').val();
    let middle_name = $('#middle_name').val();
    let third_name = $('#third_name').val();
    let family_name = $('#family_name').val();
    $.ajax({
        url: urlReq+"/api/employee/customize",
        type: "POST",
        data: {
            first_name: first_name,
            middle_name: middle_name,
            third_name: third_name,
            family_name: family_name,
        },
        cache: false,
        success: function(dataResult){
            console.log(dataResult);
            let data = dataResult;

            if(data.statusCode==200){
                $("#success").show();
                $('#success').html('Data added successfully !');                        
            }
            else if(dataResult.statusCode==201){
                alert("Error occured !");
            }
        }
    });
});

在我的php方法中,我有这个:

public function customize_store(Request $request){
    //dd($request->first_name);
    $input = $request->all();

    dd($input);

    return response()->json(['Person'=>$input]);
}

结果为<script> Sfdump = window.Sfdump || (function (doc) { var refStyle = doc.createElement('style'), rxEsc = /([.*+?^${}()|\[\]\/\\])/g, idRx =...,但我的输入也显示在其中,如下所示:

#<span class=sf-dump-protected title="Protected property">parameters</span>: <span class=sf-dump-note>array:15</span> [<samp>
      "<span class=sf-dump-key>first_name</span>" => "<span class=sf-dump-str title="7 characters">Michael</span>"
      "<span class=sf-dump-key>middle_name</span>" => "<span class=sf-dump-str title="6 characters">Sangga</span>"
      "<span class=sf-dump-key>third_name</span>" => <span class=sf-dump-const>null</span>
      "<span class=sf-dump-key>family_name</span>" => "<span class=sf-dump-str title="7 characters">Smith</span>"

我将如何提取这些数据,以便将其持久保存在数据库中?

2 个答案:

答案 0 :(得分:2)

  

尝试使用此代码。.检查URL,发送路由的路由   数据..

public function addPersonData(Request $request){
     $save_person = new Person(); // Initialize your model here..
     $save_person->first_name = $request->get('first_name');
     $save_person->middle_name = $request->get('middle_name');
     $save_person->third_name = $request->get('third_name');
     $save_person->family_name = $request->get('family_name');
     $save_person->save();
     return 'ok';     
}

答案 1 :(得分:1)

我想我明白了。首先在路由中添加一个名称(请参见here),然后在jQuery中添加ajax部分(假设您使用表单来提交用户数据):

在您的Route.php中添加:

Route::post('api/employee/customize', 'PersonController@customize_store')->name('api.employee.customize');

您的jQuery ajax请求:

$('#save-person').submit(function(e) {
    e.preventDefault();
    let first_name = $('#first_name').val();
    let middle_name = $('#middle_name').val();
    let third_name = $('#third_name').val();
    let family_name = $('#family_name').val();
    $.ajax({
        url: "{{ route('api.employee.customize') }}",
        type: "POST",
        data: { first_name, middle_name, third_name, family_name },
        cache: false,
        success: function(data){
            console.log(data);

            if(data.status === 'success'){
                $("#success").show();
                $('#success').html('Data added successfully !');
                //the person's details are in data.person.first_name etc  
                //you already knew that, but added is the new data.person.id you may use                  
            }
            else {
                alert("Error occured !");
            }
        }
    });
});

和您的控制器,假设与此数据链接的模型是Person:

public function customize_store(Request $request){
    $person = new Person($request->all());
    if ($person->save()) {
        return response()->json(['status' => 'success', 'person'=>$person]);
    }

    return response()->json(['status' => 'fail']);
}