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

0

也许问题出在服务器端。这是我给其他人的例子:http: //jsfiddle.net/YGm89/ 代码:

 $.ajax({
   url: "http://ws.geonames.org/postalCodeSearchJSON",
   dataType: "json",
   data: {
      postalcode_startsWith: request.term
   },
   success: function(data) {alert("ok");}
});

以您的代码为例。 我删除了 JSONP 函数回调名称,因为我在您的请求中看不到任何内容。我假设,您执行标准 JSON 请求(不是 JSON P)。

于 2013-04-11T10:48:42.707 回答