drpmazn9021
2018-05-07 01:06
浏览 45
已采纳

Laravel ajax只传递了一半的数据

I'm trying to save data to database with ajax, i am using the exact same way for to ajax request one of them working another one no.

here is my ajax that doesn't work.

script

<script>
  $( document ).ready( function() {
    $("#modalsave1").click(function(e){
      e.preventDefault();
    $.ajax({
      type: "post",
      url: "{{ url('admin/addnewsuboptionprodcreat') }}",
      data: {
        '_token': $('input[name=_token]').val(),
        'subopttitle': $('input[name=subopttitle]').val(),
        'opt_id': $('#opt_id').val(),
        'subopt_price': $('#subopt_price').val(),
        'optstat_id': $('#optstat_id').val(),
      },
      success: function (data) {
          console.log(data);
      },
      error: function (data) {
          console.log('Error:', data);
      }
    });
  });
  });
</script>

blade form

{{Form::open()}}

// get parent
{{ Form::label('opt_id', 'Parent Option') }}
<select class="form-control" id="opt_id" name="opt_id">
  <option value="">Select</option>
  @foreach($options as $option)
    <option value="{{ $option->id }}">{{ $option->title }}</option>
  @endforeach
</select>

//get title
{{ Form::label('subopttitle', 'Name') }}
{{ Form::text('subopttitle', null, array('id' => 'subopttitle', 'class' => 'form-control')) }}

//get price
{{ Form::label('subopt_price', 'Price') }}
{{ Form::text('subopt_price', null, array('id' => 'subopt_price', 'class' => 'form-control')) }}

//get status
{{ Form::label('optstat_id', 'Include filters?') }}
<select class="form-control" id="optstat_id" name="optstat_id">
  <option value="">Select</option>
  @foreach($statuses as $status)
    <option value="{{ $status->id }}">{{ $status->title }}</option>
  @endforeach
</select>

//save it
<button type="submit" id="modalsave1" class="modalsave1 btn btn-primary">Save</button>

{{Form::close()}}

and here is my controller

public function addnewsuboptionprodcreat(Request $reqs)
    {
      $add = Suboption::create([
          'title' => $reqs->subopttitle,
          'option_id' => $reqs->opt_id,
          'price' => $reqs->subopt_price,
          'status_id' => $reqs->optstat_id,
      ]);

      if($add){
        Session::flash('success', 'Your Sub-option saved successfully.');
      }else{
        Session::flash('danger', 'Your Sub-option didn\'t save successfully.');
      }
    }

route

  Route::post('/addnewsuboptionprodcreat', 'ProductController@addnewsuboptionprodcreat')->name('addnewsuboptionprodcreat');

I wonder, exact same method just different inputs works and this not.

Error

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`mysite`.`suboptions`, CONSTRAINT `suboptions_option_id_foreign` FOREIGN KEY (`option_id`) REFERENCES `options` (`id`)) (SQL: insert into `suboptions` (`title`, `price`, `updated_at`, `created_at`) values (Yellow, 5000, 2018-05-07 07:57:16, 2018-05-07 07:57:16))

as you see in last line of the error i only get title price and timestamps but nothing for parent and status

any idea?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dongquepao8653 2018-05-07 01:08
    已采纳

    Add option_id and status_id into protected $fillable in Suboption Model

    class Suboption
    {
        protected $fillable = ['title','price','option_id','status_id'];
        ....
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • doulue1949 2018-05-07 06:46

    Suboption Model Add following Protected $guarded

    class Suboption
    {
        /**
        * The attributes that aren't mass assignable.
        *
        * @var array
        */
        protected $guarded = [];
    }
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题