このスクリプトを機能させるのに苦労しています。これは基本的に、JSON コードを返す php からデータを取得する単純な ajax 呼び出しです。
function refreshWindows(){
if(AjaxPull && AjaxPull.readystate != 4){
AjaxPull.abort();
}
AjaxPull = $.ajax({
type: 'POST',
url: $path,
data: {
ajax: true,
mode: 'update',
to: Math.round(currentDate.getTime() / 1000),
from: Math.round(previousDate.getTime() / 1000)
},
dataType: "json",
success: function (data) {
alert(data); //that's for debug
$replies = data.Updates;
$.each($replies ,function(group,value) {
if (value!=''){
$("#group"+group+" .content").append(value);
$("#group"+group+" .content").stop().animate({ scrollTop: $("#group"+group+" .content")[0].scrollHeight }, 800);
if (!$("#group"+group+" .Window").is(':visible')) {
$("#group"+group+" .BottomBox").fadeTo('fast', 0.5).fadeTo('fast', 1.0);
}
}
});
previousDate = currentDate;
currentDate = new Date();
timeController.push( setTimeout(function(){refreshChatWindows();}, 500) );
}
});
}
Internet Explorer で表示されるエラーは次のとおりです。
SCRIPT5007: プロパティ 'Updates' の値を取得できません: オブジェクトが null または未定義です
Firefox と Google Chrome ではすべて正常に動作します。
当初、私のコードは.getを使用して作成されていましたが、誰かが.ajaxに切り替えることを提案しました- まあ、それは役に立ちませんでした。使ってみ.done(function(data){たけどダメでした。また、プロパティの反対側にある URL のすべてのデータを送信しようとしましたdataが、FF では問題なく動作しましたが、IE では同じエラーが発生しました。最後に、たとえば PHP にさまざまなヘッダーを追加しようとしましたheader('Content-Type: application/json');が、何も変わりませんでした。私はスタックオーバーフローで解決できるアイデア/可能な解決策を使い果たしたので、助けていただければ幸いです。
IE で、開発者ツールのネットワーク タブに移動し、すべてが機能するかどうかを確認しようとしました。はい、リクエストはすべてのデータと共に正しく送信されており、受け取った応答は Firefox と同じように正しい JSON です。
{"Updates":{"1":"","2":"","3":"","5":"","6":"","7":"","8":""},"time":{"from":"1367489761","to":"1367489761"}}
これは私を本当に混乱させます.何らかの理由で何かがIEに送り返されていないという理由だけで未定義エラーが発生する可能性があると思っていましたが、明らかにそうではありません. JSON を取得します。なんらかの理由でIEだけが、データが未定義であるとまだ考えています。