1

リンクの1つに次のjsonがあります。

{"edi":[{"NEdid":"19", "Publications":"B0001", "NCid":"141"
, "SEditionCode":"C0001", "SLang":"English", "STimeZone":"GMT+4:00"
, "SEdname":"Default", "NEdmon":"1", "NEdtue":"1", "NEdwed":"1"
, "NEdthu":"1", "NEdfri":"1", "NEdsat":"1", "NEdsun;":"1"
, "SFrequency":"Daily", "NSequence":"1", "dtCreatedOn":"2013-03-25 12:18:46.0"
, "NCreatedBy":"3", "dtModifiedOn":"2013-03-25 12:18:46.0"
, "NModifiedBy":"3", "BIsActive":"1", "BIsDeleted":"0", "NNoe":"7"}]}

クロス ドメイン json を解析したい。PHPページのページロードで次の関数を呼び出し、localhostを使用しています。次のコードを使用しています。

function loadEditionList(edurl) {

    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            var jsonEdition = xmlhttp.responseText;
            var objEdition = JSON.parse(jsonEdition);

            for (var i = 0; i < objEdition.edi.length; i++) { 
                var editionname=objEdition.edi[i].SEdname;  
                alert(editionname);
            }
        }
    }
    xmlhttp.open("GET", edurl, true);
    xmlhttp.send();
}

上記のコードは IE では動作し、セキュリティに関する警告メッセージが表示されますが、chrome と mozilla では動作しません。xmlhttp.status は chrome と mozilla で 0 です。

私が使用した別のコード:

function loadEdition()
{
var getUrl = 'someurl/desktopReader.do?numPublisher=3&type=Editions&numPublication=19';

                $.ajax({
                    url : getUrl,
                    type : 'GET',
                    dataType : 'jsonp',
                    jsonp: 'jsonp',
                    crossDomain : true,
                    success: function() { alert('Success!'); },                                                                                                               
                    error: function() { alert('Uh Oh!'); },
                });           
}

この場合、私は常に「うーん!」というアラートを受け取ります。

適切な方法を教えてください!

4

1 に答える 1