如何从 JSON 响应中删除不需要的标签

Posted

技术标签:

【中文标题】如何从 JSON 响应中删除不需要的标签【英文标题】:How to remove unwanted tags from JSON response 【发布时间】:2021-11-16 07:28:22 【问题描述】:

我正在使用 php MVC 模型构建网站,我想在 Ajax 中使用 JSON 并从数据库中获取数据,但 response 总是返回我不想要的 html 标记和文本。 这是 Ajax 代码:

function readData() 
$.ajax(
  url: 'http://example.com/?c=filename',
  type: 'GET',
  success: function (response) 
    console.log(response);
    var parse = JSON.parse(response);
  
 );


 readData();

这是我的 PHP 模型文件:

public function select()
 $select_query = $this->db->prepare("SELECT * FROM table_name");
 $select_query->execute();
 $row = $select_query->fetchAll(PDO::FETCH_ASSOC);
 echo json_encode($row, JSON_UNESCAPED_UNICODE);

这是我的 PHP 控制器文件:

$dashboard = new obj();  //class that contains `select` function in model file
$dashboard->select();

【问题讨论】:

尝试仅在浏览器中调用您的网址http://example.com/?c=filename,或者您可以使用postman.com 来检查您是否真的收到了 JSON 字符串而不是 HTML。也许你在后端错过了一些header @patfreeze 实际上是因为在控制器中包含视图文件,它总是显示 HTML 标签,这就是为什么response 有 HTML,我试图只获取获取项目,而不是 HTML标签 because of including view files in the controller...好吧,那就不要那样做。有一个返回 JSON 而没有别的脚本。 @ADyon 这就是 MVC 模型的工作原理,如果我不在控制器中包含视图文件,它将无法工作 我不知道您使用的是哪个框架,但是(除非它是您自己制作的)所有主要的框架都有返回 JSON 而不是视图的方法。在正确的 MVC 中,您不 include 视图 into 控制器,您从控制器 return 视图 - 或者如果您想返回 JSON ,然后返回 JSON 而不是视图。 【参考方案1】:

在你的 file.js 中添加 2 个参数:dataType 和 contentType。

$.ajax(
  url: 'http://example.com/?c=filename',
  type: 'GET',
  dataType: 'JSON',
  contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
  success: function (response) 
    console.log(response);
    var parse = JSON.parse(response);
  
 );
数据类型:'JSON' contentType: 'application/x-www-form-urlencoded; charset=UTF-8',

在你的 PHP 文件的顶部添加这一行:

header('Content-Type: application/json; charset=UTF-8');

这一行应该避免像 html 文件一样捕获它。使用 POSTMAN 在没有 javascript 的情况下测试您的请求。 Postman 可以发送一个简单的 GET 到

https://YourServerLocalOrVPStester/?c=filename

也许,可以使用 chrome、firefox、operaGx 或任何你用作浏览器的东西来制作一个简单的调用 url,而无需 javascript 或 Postman

Postman 将自动检测标题并像 JSON 一样自动显示它。

如果可行,那么从 ajax 尝试一下,应该也可以。

【讨论】:

以上是关于如何从 JSON 响应中删除不需要的标签的主要内容,如果未能解决你的问题,请参考以下文章

如何从 CURL 响应 PHP API 的 JSON 字符串中删除引号、不需要的数据

如何从 Laravel 中的响应 JSON 中删除 HTML 标签 [关闭]

使用 AFNetworking 从 JSON 响应中解析 HTML 标签

如何从 api 响应中删除不需要的字符

如何从 XElements 列表中删除不需要的节点?

从 c# json 响应中删除双反斜杠