【问题标题】:Getting 500 Internal issue during ajax response在 ajax 响应期间出现 500 内部问题
【发布时间】:2019-10-06 14:14:08
【问题描述】:

我正在为这段代码苦苦挣扎。我无法使用 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");
                        }
                });
        });
});

这是 Blade 标记

<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)"

【问题讨论】:

  • 更改 - $proArr = explode("-",$data['idsize']);$proArr = explode("-",$data['idSize']);。另一方面,请检查您的数据库和应用程序文件夹中是否存在 image
  • 这可能会导致,可能$proAttrimage 字段和值,但图像在您的应用程序中不存在。
  • Rashaed Hashan@其他地方都在工作
  • 你在其他地方是什么意思?在与其他控制器、方法或其他新应用程序的现有应用程序中?
  • @在不同的应用程序中使用相同的方法和相同的 ajax 调用

标签: php ajax laravel


【解决方案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");
            }
        });

【讨论】:

  • 谢谢@ lot@这是一个完美的解决方案
【解决方案2】:

首先确保在您的脑海中为csrf 添加meta tag

<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");
  }
});    

【讨论】:

  • @after 这我有同样的问题。我的网址有问题
  • @sanjayyadav 是的,你是的,这是一个拼写错误csrf_token() 我写错了再试一次
  • 我认为这里不允许这样做
猜你喜欢
  • 2017-04-15
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 2017-11-03
  • 2019-05-21
  • 2010-11-20
相关资源
最近更新 更多