Python: CGIで呼び出し側に複数の値を返す方法

Pythonを使ったCGIで、 呼び出し側(JavaScript)に複数の値を返すを解説します。

JSONを使用する方法

最も一般的で推奨される方法は、JSONを使用することです。

1. PythonのCGIスクリプトで:

import json
import cgi

print("Content-Type: application/json")
print()

data = {
	"value1": "Hello",
	"value2": 42,
	"value3": [1, 2, 3]
}

print(json.dumps(data))

2. JavaScript側で:

fetch('your_cgi_script.py')
	.then(response => response.json())
	.then(data => {
		console.log(data.value1);
		console.log(data.value2);
		console.log(data.value3);
	});

この方法では、複数の値を構造化されたデータとして簡単に送受信できます.

カスタム区切り文字を使用する方法

単純なテキストベースの方法も可能です:

1. PythonのCGIスクリプトで:

print("Content-Type: text/plain")
print()

print("value1|value2|value3")

2. JavaScript側で:

fetch('your_cgi_script.py')
	.then(response => response.text())
	.then(data => {
		const [value1, value2, value3] = data.split('|');
		console.log(value1, value2, value3);
	});

この方法は単純ですが、データの型や構造が限られます.

HTMLを使用する方法

HTMLを生成し、JavaScriptでパースする方法もあります:

1. PythonのCGIスクリプトで:

print("Content-Type: text/html")
print()

print("<div id='value1'>Hello</div>")
print("<div id='value2'>42</div>")
print("<div id='value3'>1,2,3</div>")

2. JavaScript側で:

fetch('your_cgi_script.py')
	.then(response => response.text())
	.then(html => {
		const parser = new DOMParser();
		const doc = parser.parseFromString(html, 'text/html');
		console.log(doc.getElementById('value1').textContent);
		console.log(doc.getElementById('value2').textContent);
		console.log(doc.getElementById('value3').textContent);
	});

この方法は、HTMLの構造を利用してデータを送信します.

いずれの方法でも、PythonのCGIスクリプトから複数の値を返し、JavaScript側で受け取ることが可能です。JSONを使用する方法が最も柔軟で一般的ですが、具体的な要件に応じて適切な方法を選択してください。

Python