私はajax.php
をjQueryと呼んでいます。 JSONレスポンスを常に返します。IEで失敗したAjaxポスト
$.ajax({
type: 'POST',
url: 'ajax.php',
data: 'some=info',
dataType: 'json',
success: function(data) {
if(data != null) {
console.log(data);
} else {
alert('IE fails here!');
}
}
});
Ajaxは、常にJSON形式のデータを返します。 IE以外のすべてのブラウザで正常に動作します(Internet Explorer 7,8,9でテスト済み)。 IEでは常に警告を表示します(つまり、応答情報を受け取ることはありません)。何か案は?
更新1:私は、ポストがIEで決して成功しないことを確認したので、データは常にnullです。
更新2:ポストは到着しますが、IEの場合のみnullを返します。
更新3(解決策):私のせいで、ajaxは他のサーバーからの呼び出しに対して保護していました。 $ _SERVER ['HTTP_REFERER']のホストが同じサーバーのホストであることを尋ねる最初のif()ステートメントを使います。今質問は、なぜIEは$ _SERVER ['HTTP_REFERER']を認識しないのですか??
これは、APIコード(PHP)
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$security = parse_url($_SERVER['HTTP_REFERER']);
if(in_array($security['host'],array('localhost','tradukka.com','173.203.198.123'))) {
header('Content-type: application/json');
$array = array('nice','data','for','api');
echo json_encode($translation);
}
}
}
IEは、$ _SERVER [ 'HTTP_REFERER']チェックに失敗します。■
アラートを取得しているので正常です。それは何らかの理由でnullです。あなたは成功を試みましたか?失敗:おそらくコードのどこかにエラーがあります。IEはそれを気に入らず、残りの部分は無視しています。 –
警告の後に 'console.log(data)'を実行して、IEが取得しているデータがあればそれを調べてください。 –
私はちょうどそのポストが決してIEでうまくいかないことを確認しました。そのため、データは常にnullです。 – andufo