概要
- Javascriptでfetch()からサーバに問い合わせした時に、文字列を返すとします。その文字列を読み込んだのに条件判定に失敗しました。
- わかってしまえば簡単なこと。文字列に改行コードが入っていたのでした。
コード
cgiで何かの処理とか条件判定した時に文字列をJavaScript/fetch()に返すとき、JavaScriptでは例えばこんな問い合わせをサーバにするとします。
...
fetch('/cgi/hoge.cgi', {
headers : {"Content-Type": "text/html"},
body : hoge
}).then(response => {
sonsole.log(response.text);
if (response.text === "FILE_EXIST" ){
...
//ファイルがあった場合の処理
...
}
}).catch(error => {...})
サーバ側のhoge.cgiでは問い合わせに結果を返す時に、例えばファイルが存在するのかを文字列で返したとします。その例です。
$ cat hoge.cgi
# なんかの条件判定を設定。
...
# 例えばファイルが存在するか?
[ -f $hoge ] && result="FILE_EXIST" || result="NONE"
#結果を返す
echo "Content-type: text/html"
echo ""
echo -n $result
exit 0
ポイントはecho -n
と改行コードをつけないようにすることです。最初echo $hoge
で返してうまく行かなたったので一晩悩みました。console.log(response.text)
ではリターンが表示されないので気が付きませんでした。XRLのレスポンス(応答ペイロード)を見て気が付きました。
どなたかのお役に立てれば嬉しいです。