プログラミング雑記

ajaxでレスポンスが呼び出したページのbodyになる場合

楠 剛毅(goke)

個人開発から世界を変えるようなプロダクトづくりを目指しています

下記のようなajaxでのリクエストを投げたときに

$.ajax({
       url: 'post_data.php',
       data:formData,
       type: 'POST',
       crossDomain: false,
       dataType: 'text',
       contentType: false,
       processData: false,
       success: function(data) {
	       console.log(data);
       },
       error: function() { alert('エラーが発生しました'); },
     });

どうもうまくいかないなと思ってレスポンスをconsoleに表示してみると

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
:

のように呼び出したhtmlのbodyが表示されることがある。

呼び出した側のコードがまずいのか、呼び出し先のコード(post_data.php)が悪いのか。

呼び出す側のjsのコードを下記のように変えて実行した時に同じ挙動であれば、呼び出し先のコードに依存しないことになるので、恐らく呼び出し側に問題があるということになる。

$.ajax({
       url: 'hogehogehoge',/* <- ここ  */
       data:formData,
       type: 'POST',
       crossDomain: false,
       dataType: 'text',
       contentType: false,
       processData: false,
       success: function(data) {
	       console.log(data);
       },
       error: function() { alert('エラーが発生しました'); },
     });

呼び出したhtmlのbodyが表示されるケースは経験した限り.htaccessの設定に問題がある。

例えば、

https://example.com/channel/111

へのアクセスで表示したい時に、.htaccessに

RewriteRule ^channel/(.*)/?$ index.php?channel=$1 [L]

のようにしているとajaxで指定しているURLが誤りになってしまい発生することがある。

goke tvでは上記のような試行錯誤の結果出来上がったサービスを配信しています。

  • この記事を書いた人

楠 剛毅(goke)

個人開発から世界を変えるようなプロダクトづくりを目指しています

-プログラミング雑記