Ajax 访问系统&x27;正在尝试获取非对象的属性';

Ajax 访问系统&x27;正在尝试获取非对象的属性';,ajax,laravel,laravel-5,laravel-5.4,Ajax,Laravel,Laravel 5,Laravel 5.4,创建一个系统,如果我按下一个按钮,我可以访问一个地方,如果我按下了错误的按钮,则取消访问。这将上载到数据库并从数据库中删除,具体取决于是否单击了按钮。目前,尽管我得到了错误: 'Trying to get property of non-object' and the place_id seems to be the problem as its being shown as null. 表:地点:id等 访问:id、地点id、用户id、时间戳 控制器:` $place_id =

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

'Trying to get property of non-object' and the place_id seems to be the problem as its being shown as null.
表:地点:id等

访问:id、地点id、用户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;
         }
阿贾克斯:

有没有办法解决这个问题,让这个地方的id识别出被访问的地方

<div class="place-name">
                <a class="btn btn-not-visited visit" >Visited?</a>
<h1>$place->name</h1>
<p>$place->address</p>
</div>

我猜想我在按钮的某个地方丢失了一个“place\u id,$place->id”?

在尝试写入数据库时是否会发生此错误?从数据库中读取,或者单击按钮时从网页中读取?似乎在控制器中。问题似乎出在$place\u id为空时,仅当
$place\u id!=0
$place\u id>0
如果place\u id返回空值,该问题将如何解决。问题是,当访问按钮被放置在place.blade上时,place_id返回空值。我需要$place_id不为空。如果'placetId'中有't',或者它应该是'placeId'
$place_id=$request['placetId']
您的
placeId
是否为空?所以这一行
placeId=event.target.parentNode.parentNode.dataset['place_id']有问题您试图从何处获取此值?如果不确定如何遍历DOM,请使用
console.log(placeId)设置此值后…返回未定义,如果我使用控制台日志,则返回未定义。这是您当前代码的预期行为。我的想法是,您可以尝试不同的选项,找到DOM节点,它返回您想要的
place\u id
。请发布您的源文件,以及您的
place
定义的确切位置,从那里可以获取
place\u id
并填充到您的js
placeId
变量中。。。
<div class="place-name">
                <a class="btn btn-not-visited visit" >Visited?</a>
<h1>$place->name</h1>
<p>$place->address</p>
</div>
 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() {

        });

        });