【问题标题】:Laravel 3 issues with loading Views using AjaxLaravel 3 使用 Ajax 加载视图的问题
【发布时间】:2017-02-02 18:29:37
【问题描述】:

我有一个包含多个<FORM>s 的页面

例如:

@foreach($build['products'] as $productid)

<form id="productid_49" method="POST" action="/products/49/custom">                                                        
<input type="hidden" name="csrf_token" value="">
<input type="button" id="btn_49" value="Click">                                                        
</form>
<div id="form_output_49">
</div>

<form id="productid_23" method="POST" action="/products/23/custom">                                                        
<input type="hidden" name="csrf_token" value="">
<input type="button" id="btn_23" value="Click">                                                         
</form>
<div id="form_output_23">
</div>

<form id="productid_15" method="POST" action="/products/15/custom">                                                        
<input type="hidden" name="csrf_token" value="">
<input type="button" id="btn_15" value="Click">                                                         
</form>
<div id="form_output_15">
</div>
.
.
.
.
.
.
.
so on

@endforeach

当btn被点击时,Jquery被调用:

$('input#btn_'+productid).click( function(e) {
                e.preventDefault();
                var form = $('#productid_'+productid);
                var post_url = form.attr('action');
                var post_data = form.serialize();
                var div=$('#form_output_'+productid).html();

                //console.log(post_url);
               $.ajax({
                    type: 'POST',
                    url: post_url,
                    cache : false, 
                    data: post_data,
                    success: function(data) {
                        $.post(post_url, function(data){
                            $('#form_output_'+productid).html(data);
                        });   
                    }
                });      
        });

路线:

Route::post('products/(:any)/custom', array('as' => 'compare', 'uses' => 'compares@custom'));

控制器:

public function post_custom($productid)
{
      $compare = new Compare($product_id);   
      $compare->customsingelproduct($product_id);
}

Lib 文件:

public function customsingelproduct($product_id)
{
    $view = View::make('view.ajaxtest');
    return $view;
}

它工作正常,但我似乎无法获得部分视图,所以我只能加载那个而不是重新加载整个页面。

有render()但是不起作用。

我怎样才能使用 AJAX 获得同一页面的部分视图,并且基本上可以做 $('#form_output_'+productid).html(data); 之类的事情

我希望我清楚地描述了这个问题,如果没有,请询​​问。

需要帮助

使用 Laravel 3。

【问题讨论】:

  • 我无法使用 AJAX 将部分视图加载到页面中
  • 是的,您以非常基本的方式解释了问题所在……但到目前为止,您还没有解释发生了什么。您有return Response::json($view));,因此您将页面作为 JSON 返回。所以你的 AJAX 选项中需要dataType: "json" 一个
  • 当我 counsol.log 但不加载视图时返回:objects:blabla
  • 啊,当然……所以不要将它作为 JSON 返回。像普通页面一样返回它。在这种情况下尝试return View::make('view.ajaxtest');...
  • @Jonathan 它给出:500(内部服务器错误)

标签: jquery ajax laravel laravel-3


【解决方案1】:

使用 Jquery 创建局部视图并正常加载:

$('#form_output_'+productid).html(data);

【讨论】:

    猜你喜欢
    • 2015-12-17
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多