浏览器上的Jquery AJAX问题

时间:2013-05-03 14:14:06

标签: jquery

我的实时网站HTML代码位于http://dev9.edisbest.com/PrinterManufacturers.htm?id=21

这在FireFox和Chrome中效果很好,并显示Status: Success。请问任何人都可以告诉我为什么它在IE9.0上不起作用?

代码如下

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type='text/javascript'>
function hello(id){
var seriesurl = "http://t2json.tgoservices.com/818746/PrinterManufacturers/"+id+"/PrinterSeries"
    $.ajax({
      cache: false,
      url: seriesurl
    }).done(function(data, textStatus, jqXHR) {      
      $('#status').html(textStatus);

    $.each(data.T2Json.PrinterSeries.Items, function(i,item) {
     $("#content1").html('<a class="manufacturer" id="'+item.Id+'" href="#">'+ item.Name + '</a></br>'); 
    });
        }).fail(function(jqXHR, textStatus) {
          $('#status').html(textStatus);    
          $('#content').html('(failed)');
        })
    }

$(document).ready( function() {

    function getParameter(param) {
        var val = document.URL;
        var url = val.substr(val.indexOf(param))
        var n=url.replace(param+"=","");
    }

    $('#time').html(new Date);
    $('#status').html('');
    $('#content').html('');
    $.ajax({
      cache: false,
      url: $('#xhr_url').val()
    }).done(function(data, textStatus, jqXHR) {      
      $('#status').html(textStatus);

    $.each(data.T2Json.PrinterManufacturers.Items, function(i,item) {
     $("#content").append('<a class="manufacturer" id="'+item.Id+'" onclick="hello('+item.Id+');" href="#">'+ item.Name + '</a></br>'); 
    });
    }).fail(function(jqXHR, textStatus) {
      $('#status').html(textStatus);    
      $('#content').html('(failed)');
    })

     $('a .manufacturer').click(function(){
    });


});
</script>
</head>
<body>
  <input id='xhr_url' style='width:600px;' type='text' value='http://t2json.tgoservices.com/818746/PrinterManufacturers'/>
<div id='content1'></div>
  <fieldset><legend>Time:</legend>
    <div id='time'></div>
  </fieldset>
  <fieldset><legend>Status:</legend>  
    <div id='status'></div>
  </fieldset>
  <fieldset><legend>Content:</legend>

    <div id='content'></div>

  </fieldset>
</body>

2 个答案:

答案 0 :(得分:0)

可能是因为第一个$.ajax({超出了$(document).ready(吗?这可能是一种竞争条件,在某些情况下,在$.ajax尝试运行之前未加载jQuery。

这也是一个问题:

var url = val.substr(val.indexOf(param))
var n=url.replace(param+"=","");

那应该是:

var url = val.substr(val.indexOf(param)),
    n=url.replace(param+"=","");

var url = val.substr(val.indexOf(param));
var n=url.replace(param+"=","");

答案 1 :(得分:-1)

这与您的代码无关,

您正在尝试制作跨域JSON请求,看起来好像您正在尝试使用Access-Control-Allow-Origin标头来解决此问题。但IE9不支持该标头,而是查找XDomainRequest,请参见此处:http://caniuse.com/#search=cors