8

このスクリプトを機能させるのに苦労しています。これは基本的に、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だけが、データが未定義であるとまだ考えています。

4

3 に答える 3

0

次のようなデータを返す同様の json 呼び出しがあります。

{"GetTombstoneDataRestResult":{"AlphaSort":"Arai Junichi","Classification":"A&D Design Object"...etc

つまり、json データによく似ています。jQuery で参照するには、コールバック名を使用します。

     $.ajax({
     type: "GET",
     dataType: "jsonp",
     url: url,
     success: function (result) {

     $('#screenshot').append('<p><strong>Title: ' +
     result.GetTombstoneDataRestResult.Title + '</strong><br />Year: ' +
     result.GetTombstoneDataRestResult.Dated + '<br />Artist: ' +
     result.GetTombstoneDataRestResult.DisplayName + '</p>');

     }
     });

あなたもこれを試してみたいようです:

var replies = data;
$.each(replies.Updates ,function(group,value) {
于 2013-05-15T15:07:09.220 に答える