在 POST 数据之前替换 JSON 中的文本

Posted

技术标签:

【中文标题】在 POST 数据之前替换 JSON 中的文本【英文标题】:Replace text in JSON before POST data 【发布时间】:2021-06-25 20:52:15 【问题描述】:

我有一个包含无效空格字符的 JSON。我想在通过 Ajax (POST) 发送它之前删除这个空间。因为 "StopsCompleted" 后面的空格在 php 中无法实现(空响应)。

摘自 JSON

"Name":"StopsCompleted ","Category":"Economy","DisplayName":"Haltestellen angefahren ","DisplayDetails":"2/2","Points":10,"IsBoolean":"false",

file.php

jQuery.getJSON("/SourceFile/Vehicles", function(data)
                                
    jQuery.ajax(
        url: '/SourceFile/Vehicles_ajax.php', 
        type: 'POST',
        data: JSON.stringify(data),
        processData: false,
        contentType: "application/json; charset=UTF-8",
        success: function(data)
            jQuery('.ausgabe').html(data);
        
    );

);

Vehicles-ajax.php

$jsonString = file_get_contents('php://input');
$json = json_decode($jsonString);
print_r($json);

有人对这个问题有什么想法吗?

非常感谢。

【问题讨论】:

空间与您的问题无关。使用json_last_error() 并获得完整的错误描述。 也认为这是一个虚构的问题,因为空格几乎不是非法字符。 字符串不好。最后有一个尾随,。它必须是 才能正确关闭它。 StopsCompleted 后面的空格与它无关,因为空格是字符串的一部分。 看看 javascript 做了什么……没有预期的功能。 如果失败,我可以看到这个错误:SyntaxError: Unexpected token in JSON at position 1783,它位于“StopsCompleted”所在的位置。 【参考方案1】:

现在我已经解决了,但是我有一个必须转换为数组的字符串。

var data;
                        
                        jQuery(document).ready(function ($) 
                            
                                                        
                            $('#los').click(function() 
                                    
                                fetch('/SourceFileJSON/Vehicles')
                                    .then(function (response) 
                                        return response.text();
                                      
                                    )
                                    .then(function (data) 
                                        
                                        data = String(data).replace("StopsCompleted ", "StopsCompleted");
                                        
                                        $.ajax(
                                    
                                            url: '/SourceFileJSON/Vehicles_ajax.php', 
                                            type: 'POST',
                                            data: JSON.stringify(data),
                                            contentType: "application/json; charset=UTF-8",
                                            success: function(data)
                                                $('.ausgabe').html(data);
                                            ,
                                            error: function(data)
                                                console.log(arguments);
                                            
                                            
                                        );
                                        
                                    );
                                        
                            );

ajax 文件:

$jsonString = file_get_contents('php://input');
$json = html_entity_decode($jsonString);
$json = json_decode($json, true);
var_dump($json);

【讨论】:

以上是关于在 POST 数据之前替换 JSON 中的文本的主要内容,如果未能解决你的问题,请参考以下文章

当我们向服务器post数据时,表单 or JSON

如何利用jQuery post传递含特殊字符的数据

Retrofit初探——POST方式提交JSON数据

批量去掉或替换文本中的字符

从存储在 postgresql 数据库中的 JSON 中选择文本或数字时遇到问题

Struts2 Action接收POST请求JSON数据及其实现解析