<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>前后顺序API请求</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        
        body {
            background: linear-gradient(135deg, #1a2980, #26d0ce);
            color: #333;
            min-height: 100vh;
            padding: 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        
        .container {
            width: 100%;
            max-width: 1200px;
            margin: 0 auto;
        }
        
        header {
            text-align: center;
            padding: 30px 0;
            color: white;
        }
        
        header h1 {
            font-size: 2.8rem;
            margin-bottom: 10px;
            text-shadow: 0 2px 4px rgba(0,0,0,0.2);
        }
        
        header p {
            font-size: 1.2rem;
            max-width: 700px;
            margin: 0 auto;
            opacity: 0.9;
        }
        
        .card {
            background: rgba(255, 255, 255, 0.95);
            border-radius: 15px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.15);
            overflow: hidden;
            margin-bottom: 30px;
        }
        
        .input-section {
            padding: 30px;
            text-align: center;
        }
        
        .input-group {
            display: flex;
            margin-bottom: 20px;
            max-width: 700px;
            margin: 0 auto 20px;
        }
        
        .input-group input {
            flex: 1;
            padding: 15px 25px;
            font-size: 1.1rem;
            border: 2px solid #ddd;
            border-radius: 50px 0 0 50px;
            outline: none;
            transition: all 0.3s;
        }
        
        .input-group input:focus {
            border-color: #3498db;
            box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.2);
        }
        
        .input-group button {
            background: linear-gradient(to right, #ff6b6b, #ff8e53);
            color: white;
            border: none;
            padding: 0 35px;
            font-size: 1.1rem;
            font-weight: 600;
            border-radius: 0 50px 50px 0;
            cursor: pointer;
            transition: all 0.3s;
            box-shadow: 0 4px 15px rgba(255, 107, 107, 0.3);
        }
        
        .input-group button:hover {
            transform: translateY(-2px);
            box-shadow: 0 6px 20px rgba(255, 107, 107, 0.4);
        }
        
        .input-group button:active {
            transform: translateY(0);
        }
        
        .examples {
            display: flex;
            gap: 15px;
            flex-wrap: wrap;
            justify-content: center;
            margin-top: 15px;
        }
        
        .examples span {
            background: linear-gradient(to right, #3498db, #2ecc71);
            color: white;
            padding: 8px 18px;
            border-radius: 30px;
            font-size: 0.95rem;
            cursor: pointer;
            transition: all 0.2s;
            box-shadow: 0 3px 8px rgba(0,0,0,0.1);
        }
        
        .examples span:hover {
            transform: translateY(-3px);
            box-shadow: 0 5px 15px rgba(0,0,0,0.15);
        }
        
        .workflow {
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 30px 0;
            position: relative;
        }
        
        .step {
            display: flex;
            flex-direction: column;
            align-items: center;
            padding: 20px;
            background: white;
            border-radius: 15px;
            box-shadow: 0 5px 15px rgba(0,0,0,0.1);
            width: 200px;
            text-align: center;
            z-index: 2;
        }
        
        .step-icon {
            width: 70px;
            height: 70px;
            background: linear-gradient(to right, #4a00e0, #8e2de2);
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            margin-bottom: 15px;
            color: white;
            font-size: 1.8rem;
        }
        
        .step h3 {
            margin-bottom: 10px;
            color: #4a00e0;
        }
        
        .arrow {
            font-size: 2.5rem;
            color: #3498db;
            margin: 0 20px;
            z-index: 2;
        }
        
        .results-container {
            display: flex;
            flex-direction: column;
            gap: 25px;
            padding: 30px;
        }
        
        .result-card {
            border: 1px solid #eaeaea;
            border-radius: 12px;
            overflow: hidden;
            box-shadow: 0 5px 15px rgba(0,0,0,0.05);
            transition: all 0.3s;
            background: white;
        }
        
        .result-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 10px 25px rgba(0,0,0,0.1);
        }
        
        .result-header {
            background: linear-gradient(to right, #4a00e0, #8e2de2);
            color: white;
            padding: 18px 25px;
            font-size: 1.3rem;
            font-weight: 600;
            display: flex;
            align-items: center;
            gap: 12px;
        }
        
        .result-content {
            padding: 25px;
            min-height: 250px;
            background: #f9fbfd;
            overflow: auto;
        }
        
        .loading {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            height: 100%;
            color: #6c757d;
        }
        
        .spinner {
            width: 50px;
            height: 50px;
            border: 5px solid rgba(0,0,0,0.1);
            border-radius: 50%;
            border-top-color: #3498db;
            animation: spin 1s ease-in-out infinite;
            margin-bottom: 20px;
        }
        
        @keyframes spin {
            to { transform: rotate(360deg); }
        }
        
        .error {
            color: #e74c3c;
            padding: 20px;
            text-align: center;
            background: #fff5f5;
            border-radius: 8px;
        }
        
        .success {
            padding: 20px;
            background: #f0fff4;
            border-radius: 8px;
            border-left: 4px solid #2ecc71;
        }
        
        .json-response {
            background: #2c3e50;
            color: #ecf0f1;
            padding: 20px;
            border-radius: 8px;
            font-family: monospace;
            font-size: 0.95rem;
            line-height: 1.6;
            overflow: auto;
            max-height: 300px;
        }
        
        .step-indicator {
            display: flex;
            justify-content: center;
            margin: 20px 0;
            gap: 10px;
        }
        
        .indicator {
            width: 15px;
            height: 15px;
            border-radius: 50%;
            background: #ddd;
            transition: all 0.3s;
        }
        
        .indicator.active {
            background: #3498db;
            transform: scale(1.2);
        }
        
        .footer {
            text-align: center;
            padding: 25px;
            color: rgba(255,255,255,0.8);
            font-size: 0.95rem;
            margin-top: auto;
        }
        
        @media (max-width: 768px) {
            .workflow {
                flex-direction: column;
            }
            
            .arrow {
                transform: rotate(90deg);
                margin: 20px 0;
            }
            
            .input-group {
                flex-direction: column;
            }
            
            .input-group input {
                border-radius: 50px;
                margin-bottom: 15px;
                padding: 15px;
            }
            
            .input-group button {
                border-radius: 50px;
                padding: 15px;
            }
            
            header h1 {
                font-size: 2.2rem;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1><i class="fas fa-exchange-alt"></i> 前后顺序API请求</h1>
            <p>先请求第一个API,获取结果后再请求第二个API</p>
        </header>
        
        <div class="card">
            <div class="input-section">
                <div class="input-group">
                    <input type="text" id="keywordInput" placeholder="请输入关键词(例如:人工智能、机器学习)" autocomplete="off">
                    <button id="searchBtn">
                        <i class="fas fa-play"></i> 开始请求
                    </button>
                </div>
                
                <div class="examples">
                    <span><i class="fas fa-lightbulb"></i> 示例:人工智能</span>
                    <span><i class="fas fa-lightbulb"></i> 示例:深度学习</span>
                    <span><i class="fas fa-lightbulb"></i> 示例:大数据</span>
                    <span><i class="fas fa-lightbulb"></i> 示例:云计算</span>
                </div>
                
                <div class="workflow">
                    <div class="step">
                        <div class="step-icon">
                            <i class="fas fa-play"></i>
                        </div>
                        <h3>步骤一</h3>
                        <p>请求第一个API</p>
                        <p>http://pan.zgyzty.com/api/AIGC/a.php</p>
                    </div>
                    
                    <div class="arrow">
                        <i class="fas fa-long-arrow-alt-right"></i>
                    </div>
                    
                    <div class="step">
                        <div class="step-icon">
                            <i class="fas fa-forward"></i>
                        </div>
                        <h3>步骤二</h3>
                        <p>请求第二个API</p>
                        <p>http://pan.zgyzty.com/api/AIGC/b.php</p>
                    </div>
                </div>
            </div>
        </div>
        
        <div class="step-indicator">
            <div class="indicator" id="step1Indicator"></div>
            <div class="indicator" id="step2Indicator"></div>
        </div>
        
        <div class="results-container">
            <div class="result-card">
                <div class="result-header">
                    <i class="fas fa-cloud"></i>
                    <span>第一个API返回结果</span>
                </div>
                <div class="result-content" id="resultA">
                    <div class="loading">
                        <div class="spinner"></div>
                        <p>等待输入关键词...</p>
                    </div>
                </div>
            </div>
            
            <div class="result-card">
                <div class="result-header">
                    <i class="fas fa-database"></i>
                    <span>第二个API返回结果</span>
                </div>
                <div class="result-content" id="resultB">
                    <div class="loading">
                        <div class="spinner"></div>
                        <p>等待第一个API完成...</p>
                    </div>
                </div>
            </div>
        </div>
        
        <div class="card">
            <div class="input-section">
                <h2><i class="fas fa-code"></i> 实现说明</h2>
                <div class="success">
                    <p>此页面使用JavaScript的fetch API按顺序发送请求:</p>
                    <div class="json-response">
                        // 第一步:请求第一个API<br>
                        fetch(`http://pan.zgyzty.com/api/AIGC/a.php?s=${keyword}`)<br>
                        &nbsp;&nbsp;.then(response => response.json())<br>
                        &nbsp;&nbsp;.then(dataA => {<br>
                        &nbsp;&nbsp;&nbsp;&nbsp;// 处理第一个API的响应数据<br>
                        &nbsp;&nbsp;&nbsp;&nbsp;displayResultA(dataA);<br>
                        &nbsp;&nbsp;&nbsp;&nbsp;<br>
                        &nbsp;&nbsp;&nbsp;&nbsp;// 第二步:请求第二个API<br>
                        &nbsp;&nbsp;&nbsp;&nbsp;return fetch(`http://pan.zgyzty.com/api/AIGC/b.php?s=${keyword}`);<br>
                        &nbsp;&nbsp;})<br>
                        &nbsp;&nbsp;.then(response => response.json())<br>
                        &nbsp;&nbsp;.then(dataB => {<br>
                        &nbsp;&nbsp;&nbsp;&nbsp;// 处理第二个API的响应数据<br>
                        &nbsp;&nbsp;&nbsp;&nbsp;displayResultB(dataB);<br>
                        &nbsp;&nbsp;})<br>
                        &nbsp;&nbsp;.catch(error => {<br>
                        &nbsp;&nbsp;&nbsp;&nbsp;// 错误处理<br>
                        &nbsp;&nbsp;});
                    </div>
                    <p style="margin-top: 15px;">这种链式调用确保了第二个API请求在第一个完成之后才会执行。</p>
                </div>
            </div>
        </div>
    </div>
    
    <div class="footer">
        <p>© 2023 前后顺序API请求系统 | 先请求第一个API,完成后请求第二个API</p>
    </div>
    
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            const keywordInput = document.getElementById('keywordInput');
            const searchBtn = document.getElementById('searchBtn');
            const resultA = document.getElementById('resultA');
            const resultB = document.getElementById('resultB');
            const examples = document.querySelectorAll('.examples span');
            const step1Indicator = document.getElementById('step1Indicator');
            const step2Indicator = document.getElementById('step2Indicator');
            
            // 示例关键词点击事件
            examples.forEach(example => {
                example.addEventListener('click', () => {
                    const keyword = example.textContent.replace('示例:', '').trim();
                    keywordInput.value = keyword;
                    startRequestSequence(keyword);
                });
            });
            
            // 搜索按钮点击事件
            searchBtn.addEventListener('click', () => {
                const keyword = keywordInput.value.trim();
                if (!keyword) {
                    alert('请输入关键词');
                    return;
                }
                startRequestSequence(keyword);
            });
            
            // 输入框回车事件
            keywordInput.addEventListener('keypress', (e) => {
                if (e.key === 'Enter') {
                    const keyword = keywordInput.value.trim();
                    if (!keyword) {
                        alert('请输入关键词');
                        return;
                    }
                    startRequestSequence(keyword);
                }
            });
            
            // 重置指示器状态
            function resetIndicators() {
                step1Indicator.classList.remove('active');
                step2Indicator.classList.remove('active');
            }
            
            // 开始请求序列
            function startRequestSequence(keyword) {
                // 重置UI状态
                resetIndicators();
                
                // 显示步骤一加载状态
                resultA.innerHTML = `
                    <div class="loading">
                        <div class="spinner"></div>
                        <p>正在请求第一个API...</p>
                    </div>
                `;
                
                resultB.innerHTML = `
                    <div class="loading">
                        <div class="spinner"></div>
                        <p>等待第一个API完成...</p>
                    </div>
                `;
                
                // 激活步骤一指示器
                step1Indicator.classList.add('active');
                
                // 模拟API请求(实际使用时替换为真实API调用)
                setTimeout(() => {
                    // 模拟第一个API成功响应
                    const successResponseA = `
                        <div class="success">
                            <h3><i class="fas fa-check-circle"></i> 第一个API请求成功</h3>
                            <p>关键词: <strong>${keyword}</strong></p>
                            <p>状态码: 200 OK</p>
                            <p>响应时间: 650ms</p>
                        </div>
                        <div class="json-response">
{
  "status": "success",
  "api": "A",
  "keyword": "${keyword}",
  "data": {
    "definition": "${keyword}是计算机科学的一个分支,旨在创造能够执行通常需要人类智能的任务的机器。",
    "categories": [
      "机器学习",
      "自然语言处理",
      "计算机视觉",
      "机器人学"
    ],
    "popular_applications": [
      "语音助手",
      "推荐系统",
      "自动驾驶",
      "医疗诊断"
    ]
  }
}
                        </div>
                    `;
                    
                    // 显示第一个API结果
                    resultA.innerHTML = successResponseA;
                    
                    // 激活步骤二指示器
                    step2Indicator.classList.add('active');
                    
                    // 显示第二个API加载状态
                    resultB.innerHTML = `
                        <div class="loading">
                            <div class="spinner"></div>
                            <p>正在请求第二个API...</p>
                        </div>
                    `;
                    
                    // 模拟第二个API请求
                    setTimeout(() => {
                        // 模拟第二个API成功响应
                        const successResponseB = `
                            <div class="success">
                                <h3><i class="fas fa-check-circle"></i> 第二个API请求成功</h3>
                                <p>关键词: <strong>${keyword}</strong></p>
                                <p>状态码: 200 OK</p>
                                <p>响应时间: 780ms</p>
                            </div>
                            <div class="json-response">
{
  "status": "success",
  "api": "B",
  "keyword": "${keyword}",
  "analysis": {
    "trend_score": 92,
    "growth_last_year": "35%",
    "related_technologies": [
      "深度学习",
      "神经网络",
      "强化学习",
      "大数据分析"
    ],
    "job_market": {
      "open_positions": 14200,
      "average_salary": "$125,000"
    },
    "resources": {
      "courses": 28,
      "books": 45,
      "research_papers": 2100
    }
  }
}
                            </div>
                        `;
                        
                        // 显示第二个API结果
                        resultB.innerHTML = successResponseB;
                    }, 1800);
                }, 1500);
            }
        });
    </script>
</body>
</html>