LoginSignup
0
1

More than 3 years have passed since last update.

JavaScriptのfetch()にcgiで返すときは改行コードを取ろう

Last updated at Posted at 2020-07-29

概要

  • 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のレスポンス(応答ペイロード)を見て気が付きました。

どなたかのお役に立てれば嬉しいです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1