【问题标题】:Laravel Ajax Post returns 500Laravel Ajax Post 返回 500
【发布时间】:2016-12-15 04:08:27
【问题描述】:

我构建了一个 ajax 帖子,它将每个滑块值(我正在使用 jquery ui 滑块)发送到我的控制器。

Ajax 代码:

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

$.ajax({
    type: 'post',
        contentType: "application/json",
    url: "{{ Route('editProductPost', $product->id) }}",
    headers: {
        'X-Requested-With': 'XMLHttpRequest'
    },
    data: JSON.stringify({
        value: getSliderVal,
        productId : getPrId
    }),
    datatype: 'json',
    success: function(response) {
        // get response
        console.log(response.sliderValue)
    }
});

在我的控制器中,我正在这样做:

public function editProductPost(Request $request)
{
    Log::info($request->get('value'));

    return view('product.edit', [
        'sliderValue' => $request->get('value')
    ]);
}

这会返回正确的滑块值,

Log::info($request->get('value'));

但我在浏览器控制台中收到此错误消息:

POST http://localhost/myApp/public/product/edit/98 500(内部 服务器错误)

稍后我想在我认为的 php 循环中调用这个 sliderValue

编辑

我确实有一个 csrf 令牌:

<meta name="csrf-token" content="{{ csrf_token() }}">

编辑

我已经这样做了:

    $sliderValue = $request->get('value');
    $route = 'updateProduct';

    return view('product.edit', compact(['sliderValue', 'route']))->render();

控制台打印我undefined,如果我这样做{{ sliderValue }},我收到一个错误,sliderValue 没有定义

【问题讨论】:

  • 如果你得到 Log::info($request->get('value'));值,那么你应该返回 json 数据而不是视图。
  • @hizbul25 我之前已经这样做了,但我不能像那样在视图中使用变量(在我的 php 循环中)
  • 添加error:function(response){ console.log(response.responseText); }
  • 这将为您提供导致问题的错误。
  • @jaysingkar 谢谢,这在我的控制台中返回了很多 html

标签: javascript php jquery ajax laravel


【解决方案1】:

对您的代码稍作改动:

    public function editProductPost(Request $request)
    {
       Log::info($request->get('value'));
       $sliderValue = $request->get('value';

       return view('product.edit', compact('sliderValue'))->render();
    }

【讨论】:

  • 谢谢,但正如我所说,我之前有这行代码,如果我使用这些代码行,我不会收到错误并且控制台返回正确的滑块值,但我不能使用 sliderValue 作为我认为的 php 变量
  • 我改了,请试试看。
  • 我没有收到错误但未定义,如果我在我的视图中这样做{{ $productEditview }} 我收到一个错误未定义变量,知道吗?
  • 用新的更改重试。
【解决方案2】:

这里的问题是您在控制器中返回了一个视图。如果您的视图在其中使用了 {{ $sliderValue }},它应该可以工作。但是javascript没有办法获取sliderValue变量。

如果你想要sliderValue原样,你可以返回这个数组

return [ 'view' => view('product.edit', compact(['sliderValue', 'route']))->render(), 'sliderValue' => $sliderValue ];

这样您将向 javascript 发送一个具有 2 个属性的对象,一个应该包含视图,第二个将只包含值。

【讨论】:

  • 嗯好的,你的意思是我不能在php中使用这个变量吗?
猜你喜欢
  • 2019-11-12
  • 2016-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 2015-11-24
  • 2016-09-16
  • 2020-01-11
相关资源
最近更新 更多