javascript - 在 Laravel 中从 JavaScript 调用模型函数

标签 javascript php laravel-4 eloquent laravel-blade

我当前的项目实际上遇到了一些小问题。以下案例:

我有一个名为“Posting”的模型,其中包含关系:

public function subscribers(){
    return $this->belongsToMany('User');    
}

在我的 View 文件中,有一个包含所有帖子的表,还有一个用于订阅/取消订阅的复选框,其值与发布 ID 相匹配:

<input class="click" type="checkbox" name="mobileos" value="{{{$posting->id}}}"
     @if($posting->subscribers->find(Auth::User()->id)) 
         checked="checked"
     @endif
>

现在我要存档的东西:

JavaScript 将监视复选框是否被选中。据此,当前用户订阅/取消订阅该帖子。像这样的东西:

        $('.click').on('click',function() {

            // $posting->find(---$(this).prop('checked')---)->subscribers()->attach(---Auth::user()->id---);
            // $posting->find(---$(this).prop('checked')---)->subscribers()->detach(---Auth::user()->id---);
        });

是否有可能实现这一目标或通过其他方式实现?到目前为止我还无法理解这个问题。

干杯, 克里斯

最佳答案

如果您想使用 Ajax 来实现此目的,则需要在 Laravel 中使用 REST 端点来进行订阅,例如:

http://localhost/subscribe/{{userid}}

当调用此Endpoint时,可以更新数据库。该函数还可以返回一个 JSON,显示数据库中保存数据库是否成功。

使用此端点在点击时进行 Ajax 调用:

var user = {
   id: 0 // retrieve the correct ID from wherever it is stored
}

$('.click').on('click',function() {

  $.GET('http://localhost/subscribe/' + user.id, 
  function () { // this is the success callback, that is called, if the Ajax GET did not return any errors
    alert('You are subsribed')
  });

});

理想情况下,您不会使用 GET 方法,而是使用 POST 并将用户 ID 作为数据发送。此外,您还需要从 session 或存储它的任何位置检索用户 ID。

请注意,当您使用 Ajax 时,它可以很容易地从客户端进行操作。因此,您应该在服务器上检查发送的用户 ID 是否与 session 中的用户 ID 相同。也许您根本不需要发送用户 ID,但这取决于您的后端是如何构建的。

关于javascript - 在 Laravel 中从 JavaScript 调用模型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28996510/

相关文章:

php - 为什么我不应该在 PHP 中使用 mysql_* 函数?

php - DELETE、FROM、WHERE 的正确 mySQL 语法

php - 在 phpunit laravel-4 中使用 json POST 测试特定元素

database - Laravel 4 中的外键跨数据库错误

javascript - url 更改后 Angular 无法加载 View

javascript - 删除高度为 : Auto? JS/CSS 的 Div 的高度

javascript - 先加载 Adsense 广告,然后加载页面?

javascript - 从键中提取公共(public)值并制作多维数组

IE8 的 Javascript/jQuery 字符串问题

javascript - Ajax返回信息但重定向到不同的页面