と という 2 つの開発サイトがapi.localhost
ありgame.localhost
ます。どちらも、物理サーバーで実行されているものと同じ古いバージョンの Apache から実行されているため、必要がない限り変更したくありません。また、古いバージョンの PHP を実行しています (必要がない限り、更新したくありません)。
問題は、テスト ページ (以下に再現) を実行するapi.localhost
と正常に動作することです。同じページを実行するとgame.localhost
失敗します。最初は、失敗は当時使用していた jquery.jsonrpc が原因だと思っていたので、jQuery ajax 呼び出しだけを使用するようになりました。呼び出していた index.php ファイルの応答を、単純で正しい一般的な jsonrpc 応答に減らしました。実際の ajax 呼び出しは、別の SO の質問から来ています。firebug コンソールは驚くべきこと200 OK
に、リクエストの赤い文字列の後に応答がないと言っています。
私が見たもの:
- どちらのサイトにも同じバージョンの jquery があります。
- 仮想ホストは問題ないようです。エラーログのファイル名が異なるという点だけが異なります。
- 多くの favicon エラーを除いて、エラー ログには何もありません。
- hostsファイルは問題ないようです。そこには何も珍しいことはありません。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>test</title>
<head>
<body>
<script type="text/javascript" src="jquery.js"></script>
<script>
$(document).ready(function() {
$.ajax({
url: 'http://api.localhost/index.php',
data: JSON.stringify({jsonrpc:'2.0',method:'add', params:[1400,2100],id:"jsonrpc"}), // id is needed !!
type:"POST",
dataType:"json",
success: function (result) {
alert("ok");
},
error: function (err,status,thrown) {
alert ("this syntax sucks!! " + " ERROR: " + err + " STATUS: " + status + " " + thrown );
},
complete: function (xhr,status) {
alert('Complete=> showing status as: '+ status);
data = $.parseJSON(xhr.responseText);
alert (data);
}
});
});
</script>
test
</body>
</html>
api.localhost/index.php
<?php
print '{"jsonrpc": "2.0", "result": 19, "id": 1}';
?>
リクエストの処理を妨げているものは何ですか?