概要
- 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$resultexit 0
ポイントはecho -n
と改行コードをつけないようにすることです。最初echo $hoge
で返してうまく行かなたったので一晩悩みました。console.log(response.text)
ではリターンが表示されないので気が付きませんでした。XRLのレスポンス(応答ペイロード)を見て気が付きました。
どなたかのお役に立てれば嬉しいです。