下記のような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では上記のような試行錯誤の結果出来上がったサービスを配信しています。