【问题标题】:Laravel - load post with custom id via ajaxLaravel - 通过 ajax 加载带有自定义 ID 的帖子
【发布时间】:2015-10-31 08:54:32
【问题描述】:

当我点击帖子链接时,我想通过 AJAX 加载我的帖子,如何通过 AJAX 发送我的帖子 ID?

我的 Blade 文件中有一个链接:

{{ link_to_route($post->type, $post->comments->count() . ' ' . t('comments'), array('id' => $post->id, 'slug' => $post->slug), array('class' => 'link--to--post')) }}

我有以下路线定义:

Route::get('news/{id}-{slug?}', ['as' => 'news', 'uses' => 'NewsController@show']);

和控制器动作:

public function show($id, $slug = null)
{
    $post = $this->news->getById($id, 'news');

    if ($slug != $post->slug){
     return Redirect::route('news', ['id' => $post->id, 'slug' => $post->slug]);
    }

    Event::fire('posts.views', $post);

    return View::make('post/post', compact('post'));
}

然后我正在尝试这个:

var postTitle = $(".link--to--post");

postTitle.click(function () {   
    $.ajax({
        url: '/news/{id}-{slug}',
        type: 'GET',
        data: $(this),
        success: function (data) {
            console.log(data)
        }      
    });

    return false;
});

但这对我不起作用,我做错了什么?

【问题讨论】:

  • 您的 .ajax 调用中有 $(this) -- 在此上下文中 this 指向什么对象?如果data被设置为一个对象,对象的属性会被转换成类似?id=4&slug=foo这样的查询字符串,这里可能不是你想要的。

标签: php jquery ajax laravel laravel-routing


【解决方案1】:

你的 javascript 应该像这样传递参数:

$.ajax({
    url: '/news/' + id + '-' + slug,
    success: function (data) {
        console.log(data)
    }      
});

您有 url: '/news/{id}-{slug}',它将执行对 /news/{id}-{slug} 的 GET 请求,这不是一个有效的路由 - 您想要一个类似 /news/1-foo 的 URL。

【讨论】:

  • 我正在尝试使用帖子的idslug 添加自定义属性,这很有效,但我认为这不是好的变体,不是吗?
  • 我的意思是我向刀片中的链接添加属性:data-id="id here" 和 data-slug="slug here",然后我通过 ajax 获取 id 和 slug ,这很好用,但我认为这不是好的解决方案,还是我错了?
  • 我一直使用data-id 之类的属性——我不认为这是一个坏习惯。
  • 如果您在这里询问您的一般策略,那并不是真正的堆栈溢出材料 - 但如果您发布具体问题,我可以帮助您解决具体问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
相关资源
最近更新 更多