1

我编写了一个 PHP 类来处理 CSV 文件并上传条目。最后一轮在文件中超过 15,000 行。

以前,在我的包装器中,我会像这样返回 json 响应:

echo json_encode($jsonResponse);
wp_die();

当我们上传多达 2,000 行的文件时,这工作得很好。最近,我们上传了一个包含 4,000 多行的文件,并且 json 响应永远不会打印 -response将是NULL. 经过数小时检查文件本身是否导致问题后,我选择使用以下

wp_send_json($jsonResponse);

我的回复会按预期显示在屏幕上。我研究了该wp_send_json()方法并了解它是 WP 的预期用途。我的问题是为什么我以前的实现到现在都有效?我假设通过手动运行的响应json_encode()太大了?

我正在寻找对问题根源的深入了解,并更深入地了解我的解决方案为何有效。

4

1 回答 1

1

我假设在您的情况下json_encode()返回 boolean falsejson_encode()从不返回null,它返回一个字符串或false错误。当然,它可以返回字符串“ null”,但不能返回“ NULL”。

您的数据很可能包含一些二进制数据(例如损坏的 UTF-8),有效的 JSON 不得包含这些数据。json_last_error_msg()您可以通过调用after来检查实际的错误消息json_encode()

wp_send_json()对您的数据执行一些清理,使其可 json 编码。但即使它确实产生了一些不错的 JSON 输出,但数据实际上被“破坏”了(无论是否明显),因为清理过程会修改数据。

于 2019-07-18T19:47:12.907 回答