You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32 LWIP Web服务器CGI处理器如何返回JSON数据至网页

解决STM32 LWIP Web服务器CGI返回JSON数据的问题

原CGI处理器通过返回HTML文件路径实现页面重定向,但要直接返回JSON数据供前端AJAX解析,需要修改处理器逻辑,直接向HTTP响应写入JSON内容,而非返回路径。

修改步骤及代码示例

LWIP的HTTP服务器允许CGI处理器直接输出响应内容,核心是使用cgi_write写入数据,并设置正确的响应头,最后返回NULL告知服务器无需加载文件:

#include "lwip/apps/httpd.h"
#include <string.h>

const char *CGIsetting_Handler(int iIndex, int iNumParams, char *pcParam[], char *pcValue[])
{
    // 1. 构造JSON数据(可替换为实际动态获取的系统参数)
    const char *json_data = 
        "{"
        "\"Description\": \"STM32工业控制器\","
        "\"Serial_Number\": \"SN-2024-0001\","
        "\"Device_Tag\": \"DEV-CON-001\","
        "\"Contact\": \"support@example.com\","
        "\"Firmware_Version\": \"v1.2.0\""
        "}";

    // 2. 设置响应头:指定内容类型为JSON,确保前端正确解析
    httpd_set_content_type("application/json");

    // 3. 将JSON数据写入HTTP响应体
    cgi_write(json_data, strlen(json_data));

    // 4. 返回NULL,告知服务器已自行处理响应,无需重定向到HTML文件
    return NULL;
}

关键说明

  • 响应头设置:httpd_set_content_type("application/json")是必须的,缺失会导致前端JSON.parse解析失败。
  • 动态参数处理:如果需要返回实时系统数据,可通过拼接字符串生成JSON(注意分配足够的缓冲区,避免内存溢出)。
  • LWIP配置检查:确保工程中开启了LWIP_HTTPD_CGI宏,否则CGI功能无法正常工作。

修改后,前端AJAX请求会收到正确的JSON响应,即可正常解析并渲染页面元素。

内容的提问来源于stack exchange,提问作者Pratheek M C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:30:30