javascript - json最后一个错误返回4

标签 javascript php json

我试图通过 ajax 调用将数组从 js 发送到 php。为了实现这一点,我首先使用 JSON.stringify() 将字符串转换为 json,然后在另一端使用 json_decode() 进行解码,但没有成功。

使用json_last_error()我发现错误是4。

Js代码如下所示

        var form_data = $(this).serialize();

        form_data+='&extraITEMS='+JSON.stringify(extraITEMS);
        var button_content = $(this).find('button[type=submit]');

        form_data=form_data+'&landType='+landType;
        button_content.html('Adding...'); //Loading button text
        $.ajax({ //make ajax request to cart_process.php
            url: "/cart/cart_process.php",
            type: "POST",
            dataType: "json", //expect json value from server
            data: form_data
        }).done(function (data) { //on Ajax success
            $("#cart-info").html(data.items); //total items in cart-info element
            button_content.html('Add to Cart'); //reset button text to original text
            if ($(".shopping-cart-box").css("display") == "block") { //if cart box is still visible
                $(".cart-box").trigger("click"); //trigger click to update the cart box.
            }
        })

我将数组附加到表单数据中。

在 php 端

     foreach($_POST as $key => $value){
        $new_product[$key] = filter_var($value, FILTER_SANITIZE_STRING); //create a new product array
    }

    //we need to get product name and price from database.


    if(isset($new_product['extraITEMS']))
    {
    $newPrice=0;
    $extraITEMS=json_decode($new_product['extraITEMS'],true);
    var_export($extraITEMS);
    error_log(stripslashes($new_product['extraITEMS']));
    if(is_array($extraITEMS))
    {
        foreach($extraITEMS as $key=>$value)
        {
            if($value=='cherry'||$value=='chocolate chip'||$value=='butterscotch chip'||$value=='gems')
                $newPrice+=50;
            else if($value=='vanilla'||$value=='pineapple'||$value=='chocolate'||$value=='dark chocolate'||$value=='strawberry'||$value=='blackcurrant'||$value=='grape'||$value=='mango'||$value=='butterscotch')
                $newPrice+=100;
        }

    }
    unset($new_product['extraITEMS']);
   }

enter image description here

这是 Firebug 控制台的快照。

如何解决这个问题?

更新:

var_export()

'"[\\"vanilla\\",\\"chocolate\\"]"'

上面的控制台日志显示在使用JSON.stringify()之前的情况

在阵列上使用它后显示第二个。

enter image description here

最佳答案

我终于找到了解决方案,由于这段代码它不起作用

 foreach($_POST as $key => $value){
        $new_product[$key] = filter_var($value, FILTER_SANITIZE_STRING); //create a new product array
    }

因为 json 解码在过滤器清理后的字符串上无法正常工作。

关于javascript - json最后一个错误返回4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39460398/

相关文章:

JavaScript 将具有相同 id 的对象转换为对象数组

javascript - FB :share-button with json attachment?

php - 是什么原因导致DB PDO连接失败: SQLSTATE[08004] [1040] Too many connections

php - 如何编辑 vscode 的默认 php linter?

json - 当 graph.microsoft.com 突然开始返回最近有效的请求的错误时,我从哪里获得支持?

javascript - 扩展 JavaScript 错误/异常

php - 将值从 PHP 发送到 jQuery

java - 使用 jackson 库反序列化 MongoDB $oid

mysql - 如何将新对象添加到 MariaDB 中现有的 JSON 对象中?

javascript - 如何从asp.cs方法中获取javascript中的数据