未捕获的语法错误:JSON.parse:JSON 数据第 1 行第 1 列的数据意外结束

问题描述 投票:0回答:2

我一直在这里阅读其他一些问题,但我找不到一个可以完全解释我应该如何解决它的问题。我是 JSON 新手,并不完全理解它。

我必须从两列(regular_price 和 sale_price)搜索价格范围(min_price 和 max_price),但无法从两列中获取值。

<script>
    $( function() {
        $( "#slider-range" ).slider({
            range: true,
            min: {{ $min_price }},
            max: {{ $max_price }},
            values: [ 0, {{ $max_price }} ],
            slide: function( event, ui ) {
                var amount = $( "#amount" ).val( " $ " + ui.values[ 0 ] + " -  $ " + ui.values[ 1 ] );
                $.ajax({
                    type: 'get',
                    dataType: 'json',
                    url: '{{ route('priceFilter') }}',
                    data: 'amount',
                    success: function (response) {
                        var data = JSON.parse(response);
                        $.each(data, function (index, element) {
                            console.log(element);
                        });
                    }
                });
            }
        });
        $( "#amount" ).val( " $ " + $( "#slider-range" ).slider( "values", 0 ) + " -  $ " + $( "#slider-range" ).slider( "values", 1 ) );
    });
</script>

我单击范围,出现以下错误:

未捕获的语法错误:JSON.parse:JSON 数据第 1 行第 1 列的数据意外结束

jquery jquery-ui slider
2个回答
1
投票

这是:

  • 数据类型问题或
  • 格式错误或
  • 变量的空值。

我的足迹:

  • 我的用户没有写权限。
  • 我必须在 SQL 后端写一个小数,但代码在它周围连接了引号,这样
    1.00
    就变成了字符串
    '1.00'
  • 我必须在较大函数的开头用空字符串
    ''
    替换变量的任何空值,以便针对
    ''
    的检查起作用。

在您的例子中,您使用了字符串值而不是整数作为金额。也许,您的代码中还有其他值会导致此类错误。这不仅是数据类型错误,而且是格式错误。例如,min_price 和 max_price 在前端可能是小数,但在后端是整数?

存在大量此类数据类型错误 语法错误:JSON.parse:解析错误。该链接是您的错误的官方帮助,显示在浏览器的调试器中(

Ctrl+Shift+C
F12
--> 调试器):

查看整个指南。


除此之外,没有解决错误,这是我在评论和另一个答案中读到的另一件小事。没有测试过,我对此一无所知。正如对 Uncaught SyntaxError: JSON.parse: Uncaught Character at line 1 column 2 of the JSON data on jQuery 的回答,以及评论中所述:

如果 dataType: "json",则不需要 json.parse。

改变

                    success: function (response) {
                        var data = JSON.parse(response);
                        $.each(data, function (index, element) {
                            console.log(element);
                        });
                    }

                    success: function (response) {
                        $.each(response, function (index, element) {
                            console.log(element);
                        });
                    }

0
投票

那是你的台词:

data: 'amount',

您应该将其更改为以下格式:

 $.ajax({
         url: 'something.php',
         data: {amount: amount},
                type: 'POST',
                success: function (data) {
                    if (!data.error) {
                       //your code
                    }
                }
            });
© www.soinside.com 2019 - 2024. All rights reserved.