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

如何在Tampermonkey脚本中通过JavaScript获取PHP接口返回结果

问题分析

你的问题主要出在两个核心点上:

  1. 现有PHP脚本的输出逻辑完全错误,没有生成JavaScript可解析的结构化数据
  2. Tampermonkey环境下普通Ajax会受同源策略限制,需要用专属API处理跨域请求

第一步:修复PHP脚本

首先要把PHP的输出改成标准JSON格式,这样JavaScript才能正确解析数据。替换你的PHP代码为以下版本:

<?php 
$servername = "myHosting"; 
$username = "myUserName"; 
$password = "MyPassword"; 
$dbname = "myDbName"; 
$conn = new mysqli($servername, $username, $password, $dbname); 

if ($conn->connect_error) { 
    // 输出JSON格式的错误信息
    die(json_encode(["error" => "Connection failed: " . $conn->connect_error])); 
} 

$sql = "SELECT id, name, description FROM tableName;"; 
$result = $conn->query($sql); 

$response = [];
if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
        // 将每一行数据存入响应数组
        $response[] = $row;
    } 
} else { 
    $response = ["message" => "0 results"];
} 

// 设置响应头为JSON类型,告诉前端如何解析
header('Content-Type: application/json');
// 输出结构化的JSON数据
echo json_encode($response);

$conn->close(); 
?>

第二步:编写Tampermonkey用户脚本

普通jQuery Ajax在Tampermonkey中会被浏览器的同源策略拦截,我们需要使用Tampermonkey提供的GM_xmlhttpRequest API来处理跨域请求。下面是完整的可运行脚本:

// ==UserScript==
// @name         Fetch PHP Data to Console
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Pull data from your PHP script and log to browser console
// @author       You
// @match        *://*/*  // 可修改为你需要触发脚本的具体域名,比如 https://your-target-site.com/*
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function() {
    'use strict';

    // 发送请求到你的PHP文件
    GM_xmlhttpRequest({
        method: "GET",  // 你的PHP脚本不需要处理POST,用GET即可
        url: "https://myserver.com/file.php",
        onload: function(response) {
            try {
                // 将JSON字符串解析为JS对象
                const data = JSON.parse(response.responseText);
                console.log("Fetched data from PHP:", data);
            } catch (e) {
                console.error("Failed to parse JSON response:", e);
                console.log("Raw response content:", response.responseText);
            }
        },
        onerror: function(error) {
            console.error("Request failed:", error);
        }
    });
})();

关键注意事项
  • @grant GM_xmlhttpRequest:这一行必须保留,它是Tampermonkey允许跨域请求的关键声明,没有它请求会直接失败
  • 请求方法:如果后续需要用POST传递参数,只需修改method为POST,并在PHP中处理$_POST数据即可
  • 匹配规则:@match字段可以限定脚本只在特定网站触发,避免不必要的请求

内容的提问来源于stack exchange,提问作者Marcin Frąckiewicz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:30:12