在 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 中的文本的主要内容,如果未能解决你的问题,请参考以下文章