【问题标题】:Visit system - 'Trying to get property of non-object'访问系统 - '试图获取非对象的属性'
【发布时间】:2018-10-21 06:30:24
【问题描述】:

创建一个系统,如果我按下一个按钮,我可以访问一个地方,然后如果我按下了错误的按钮,则取消访问。这将上传到数据库并从数据库中删除,具体取决于是否单击了按钮。目前虽然我收到错误:

'Trying to get property of non-object' and the place_id seems to be the problem as its being shown as null.

表格:地点:id等

访问:id、place_id、user_id、时间戳

控制器:`

      $place_id = $request['placeId']; 
      $place = Place::find($place_id); 
      $visited = Auth::user()->visitors()->where('place_id', $place_id)->first(); 

      if($visited == null) {
        $visited = new Visit(); 
        $visited->user_id = Auth::user(); 
        $visited->place_id = $place->id; 
        $visited->save(); 
return null; 
} else{`

         $visited->delete();
         return null;
         }

AJAX:

    var placeId = 0;
    var token = '{{ Session::token() }}';
    var urlVisit = '{{ route('visitss') }}';
    $('.visit').on('click', function(event){
     event.preventDefault();
     placeId = event.target.parentNode.parentNode.dataset['place_id'];

$.ajax({
            method: 'POST',
            url: urlVisit,
             data: { place_id: placeId, _token: token}
     })
        .done(function() {

        });

        });

关于如何解决这个问题并让 place_id 识别正在访问的地方的任何想法?

【问题讨论】:

  • 尝试写入数据库时​​是否发生此错误?是从数据库中读取,还是在点击按钮时从网页中读取?
  • 似乎在控制器中。问题似乎在于 $place_id 为空
  • 仅在$place_id != 0$place_id > 0 时尝试添加新访问
  • 如果 place_id 返回 null 将如何解决。问题是当访问按钮放置在 place.blade 上时 place_id 返回 null,我需要 $place_id 不为 null
  • “placetId”应该有“t”,还是应该是“placeId”$place_id = $request['placetId'];

标签: ajax laravel laravel-5 laravel-5.4


【解决方案1】:
<div class="place-name">
                <a class="btn btn-not-visited visit" >Visited?</a>
<h1>$place->name</h1>
<p>$place->address</p>
</div>

JS

 var placeId = 0;
    var token = '{{ Session::token() }}';
    var urlVisit = '{{ route('visitss') }}';
    $('.visit').on('click', function(event){
     event.preventDefault();
     placeId = event.target.parentNode.parentNode.dataset['place_id'];

$.ajax({
            method: 'POST',
            url: urlVisit,
             data: { place_id: placeId, _token: token}
     })
        .done(function() {

        });

        });

我想我在按钮的某处缺少“place_id, $place->id”?

【讨论】:

  • 您的placeId 为空,对吗?所以placeId = event.target.parentNode.parentNode.dataset['place_id'];这行有问题你想从哪里得到这个值?如果您不确定如何遍历 DOM,请在设置此值后使用 console.log(placeId);...
  • 如果我使用控制台日志返回未定义
  • 这是您当前代码的预期行为。我的想法是,你会尝试不同的选项,找到 DOM 节点,返回你想要的place_id。请发布您的源文件,以及您的 place 定义的确切位置,应该从哪里获取 place_id 并将其填充到您的 js placeId var...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-08
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 2018-06-27
  • 2014-12-09
相关资源
最近更新 更多