添加网址参数后,x可编辑中断,但发生异常

时间:2019-06-25 04:44:05

标签: javascript ajax laravel-5 routes x-editable

在我的Laravel 5.5项目中,使用x可编辑的弹出字段对字段进行页面上编辑。用户单击该值,将显示一个可编辑的弹出窗口,确认后将更改提交到数据库(输入或单击选中标记图标)。这很好用,但是后来我更改了路由代码,向页面URL添加了一个参数,以根据所使用的参数加载页面的一个版本或另一个版本。这适用于页面选择,但已破坏了已加载页面中所有x可编辑实例。现在,它们以以下错误中断(显示的第一部分是第一部分,因为错误转储为200行)

Edit Amount
212000.00
{
"message": "",
"exception": "Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException",
"file": "C:\\xampp\\htdocs\\DS_dev_01\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\RouteCollection.php",
"line": 255,
"trace": [
{
"file": "C:\\xampp\\htdocs\\DS_dev_01\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\RouteCollection.php",
"line": 242,
"function": "methodNotAllowed",
"class": "Illuminate\\Routing\\RouteCollection",
"type": "->"
},
...

我的查看页面中的x可编辑代码为:

<a href="#" class="assetName" data-type="text" data-name="split_amount" data-url="update-investment-row" data-pk="{{ $investment_split->id }}" data-title="Edit Amount" data-value="{{$investment_split_yours}}">${{number_format($investment_split_yours)}}</a>

我处理来自此弹出窗口的ajax调用的(web.php)路由是:

Route::post('atcv-split-scenario/update-investment-row', 'InvestmentLineSplitController@updateRow')->middleware('auth');

处理update_row调用的控制器(InvestmentLineSplitController)代码:

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\investment_line_split  $investment_line_split
     * @return \Illuminate\Http\Response
     */
    public function updateRow(Request $request, investment_line_split $investment_line_split)
    {

        $pk = $request->input('pk');

        $splitRecord = $investment_line_split::findOrFail($pk);

        // get column name
        $col = $request->input('name');

        // get new value
        $value = $request->input('value');

        $splitRecord->$col = $value;
        $splitRecord->save();

        return \Response::json(array('status' => 1));
    }

调用该页面的URL是http://ds_dev_01.test:8080/atcv-split-scenario/Joe%20vs%20Anne/s,最后一个“ S”参数使该URL失效。在添加最后一个参数(由S或M确定要加载页面的两个版本中的哪个)之前,x可编辑的效果很好,因此以某种方式导致了最后一个参数的问题,但是我看不到我的代码或路由在哪里不正确以及它将如何影响它。上面的所有代码在没有最后一个参数的情况下都能正常工作。

这是幕后的JavaScript:

$(document).ready(function() {

$.fn.editable.defaults.mode = 'popup';
$.fn.editable.defaults.send = "always";

  $.fn.editable.defaults.params = function (params) 
  {
   params._token = $("#_token").data("token");
   return params;
  };

  $.fn.editable.defaults.success = function(response, newValue) 
            {
                //if(!response.success) return response.msg;
                window.location.reload();
            };

$('.assetName').editable({

           ajaxOptions: {
             dataType: 'json',
             type: 'post'
           }

           });
});

该错误提示使用了错误的方法,但是我知道它是正确的,因为它可以在没有添加URL参数的页面上运行。我需要该参数来确定加载哪个页面,但是如何使x可编辑工作(为什么不这样做)呢?

有什么想法或建议吗?

0 个答案:

没有答案