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

如何在同一文件内将JavaScript对象传递给PHP进行后续处理

问题核心原理

PHP属于服务端语言,会在页面返回到用户浏览器之前就完成执行;而JS属于客户端语言,是页面加载到浏览器之后才运行的。二者运行的时间、环境完全隔离,你把代码写在同一个文件里也没法直接互相传值,必须通过HTTP请求完成数据传递。

具体修改方案

JS端修改

你注释的jQuery POST逻辑方向正确,用原生XMLHttpRequest可以直接调整如下:

  1. 使用JSON.stringify()将JS对象转为JSON字符串,替换你注释里写错的$parseJson
  2. 直接向当前页面地址发POST请求即可,不需要额外新建PHP文件
// 把你原来注释的代码替换成以下内容
const json_kwc = JSON.stringify(testKeyWordAppearance);
let postXhr = new XMLHttpRequest();
postXhr.open("POST", window.location.href);
postXhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
postXhr.send("obj=" + encodeURIComponent(json_kwc));

PHP端修改

同文件的PHP需要先判断是否收到POST传参,避免页面首次加载时报错,写入CSV的逻辑可以直接加在判断分支内:

<?php
if (!empty($_POST['obj'])) {
    $mygetter = $_POST['obj'];
    $values = json_decode($mygetter, true); // 第二个参数传true可以直接转为关联数组方便处理
    // 写入CSV示例
    $csvFile = fopen('test_result.csv', 'a');
    // 首次写入可以自行添加表头行
    fputcsv($csvFile, [
        $values['paragraph'],
        $values['word'],
        $values['result Local'],
        $values['result'],
        $values['responseT'],
        $values['Test']
    ]);
    fclose($csvFile);
    // 处理完成直接退出,避免返回整个页面HTML给POST请求
    exit;
}
?>
注意事项
  • 提前确认CSV文件所在目录的写入权限,避免写入失败
  • 发送POST请求时对JSON字符串做URL编码,避免特殊字符导致传值异常
  • 如果需要处理请求成功的回调,可以给postXhr添加onreadystatechange事件监听请求状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:00:04