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

FW/1框架:如何仅返回Ajax数据而不渲染完整视图?

解决FW/1中action返回完整页面而不是纯数据的问题

FW/1默认会根据action匹配对应视图进行渲染,要实现仅返回数据,你可以通过以下两种方式修改后端函数,同时配合前端异步请求来完成:

方法一:直接返回序列化的JSON数据

FW/1会识别到action函数直接返回的非空值,自动跳过视图渲染流程。将查询到的员工数据序列化为JSON,设置响应头后返回即可:

public any function checkempid(struct rc = {}) {
    var employeeid = rc.employeeid;
    var employee = variables.activeidentificationService.checkempid(employeeid);
    
    // 设置响应内容类型为JSON
    request.webRequest.setResponseHeader( "Content-Type", "application/json" );
    // 返回序列化后的JSON数据,FW/1会直接输出内容,不渲染视图
    return serializeJson( employee );
}

方法二:设置skipView标志手动输出数据

如果需要保留rc变量的使用,可以通过request.skipView = true告诉FW/1跳过视图渲染,再手动输出JSON数据:

public any function checkempid(struct rc = {}) {
    var employeeid = rc.employeeid;
    rc.employee = variables.activeidentificationService.checkempid(employeeid);
    
    // 禁用视图渲染
    request.skipView = true;
    // 设置响应头
    request.webRequest.setResponseHeader( "Content-Type", "application/json" );
    // 输出序列化后的员工数据
    writeOutput( serializeJson( rc.employee ) );
}

前端配合:用AJAX异步请求

原来的onblur如果触发页面跳转或表单提交,必然会导致整页渲染,需要改成AJAX异步请求,示例代码如下:

// 假设员工ID输入框id为employeeid,展示数据的div为employeeInfo
document.getElementById('employeeid').addEventListener('blur', function() {
    const empId = this.value;
    if (!empId) return;
    
    fetch('/你的控制器名称/checkempid', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: `employeeid=${encodeURIComponent(empId)}`
    })
    .then(res => res.json())
    .then(employeeData => {
        // 根据返回的数据更新页面指定区域
        const infoDiv = document.getElementById('employeeInfo');
        infoDiv.innerHTML = `
            <p>姓名:${employeeData.name}</p>
            <p>部门:${employeeData.department}</p>
        `;
    })
    .catch(err => console.log('请求出错:', err));
});

修改完成后,输入框失去焦点时会异步请求接口,获取纯JSON数据后更新页面局部内容,不会触发整页渲染。

内容的提问来源于stack exchange,提问作者spacerobot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:35:23