在Ajax响应期间获取500内部问题

时间:2019-10-06 14:14:08

标签: php ajax laravel

我正在努力处理此代码。我无法使用ajax发送回复。 Ajax脚本在这里。

$(document).ready(function () {
        $('#selectSize').change(function () {
                var idSize = $(this).val();
                $.ajax({
                        type: "get",
                        dataType: 'json',
                        url: 'getproductprice',
                        data: {
                                idSize: idSize
                        },
                        success: function (response) {
                                console.log("working");
                        },
                        error: function () {
                                console.log("error");
                        }
                });
        });
});

这是刀片标记

<select name="size" id="selectSize" style="width:150px;">
    <option value="">Select Size</option>
    @foreach($productDetails->attributes as $size)
        <option value="{{$productDetails->id}}-{{$size->size}}">{{$size->size}}</option>
    @endforeach
</select>

这是控制器代码

public function getProductPrice(Request $request)
{
    $data = $request->all();
    $proArr = explode("-", $data['idsize']);
    $proAttr = ProductsAttribute::where(['product_id' => $proArr[0], 'size' => $proArr[1]])->first();
    $getCurrencyRates = Product::getCurrencyRates($proAttr->price);
    echo $proAttr->price . "-" . $getCurrencyRates['USD_Rate'] . "-" . $getCurrencyRates['GBP_Rate'] . "-" . $getCurrencyRates['EUR_Rate'];
    echo "#";
    echo $proAttr->stock;
}

我不知道,当我选择选项值时,我在做什么错。 错误会来。

  

“试图获取非对象的属性“图像”(查看:   C:\ xampp \ htdocs \ wrost \ resources \ views \ shop \ product-details.blade.php)“

2 个答案:

答案 0 :(得分:1)

您的ajax应该是-

$.ajax({
            url: 'getproductprice',
            type: 'POST',
            data: {idSize: idSize},
            beforeSend: function (request) {
                return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content'));
            },
            success: function (response) {
               console.log(response);
            },
            error: function (err) {
                console.log(err);
                alert("Something Went Wrong, Please check again");
            }
        });

答案 1 :(得分:0)

首先请确保您为meta tag添加了csrf

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

最后,您需要在ajax对象中添加header对象

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

会是这样

$.ajax({
   type: "get",
   dataType : 'json',
   headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
   },
   url:'getproductprice', 
   data: {idSize: idSize},
   success:function(response){
   console.log("working");
  },
  error:function(){
   console.log("error");
  }
});