2012-01-31 149 views
0
工作

我做一個jQuery插件看起來像:jQuery的Ajax請求跨域不IE6

(function($){ 
$.fn.plugin_name = function(){ 
    var methods = { 
     getSomeThing: function(callback){ 
      $.ajax({ 
       type: 'GET', 
       dataType: 'jsonp', 
       url: 'http://thirdparty.com/get',  
       success: function(response){ 
        callback(response); 
       } 
      }); 
     }, 
     getDetail: function(callback){ 
      $.ajax({ 
       type: 'GET', 
       dataType: 'jsonp', 
       url: 'http://thirdparty.com/getdetail', 
       data:{id:1}, 
       success: function(response){ 
        //this code block has never executed in IE6 
       }, 
       error: function(request, status, error){ 
        alert(request.statusText); // i get "success" in IE6 
        alert(status); // i get "parseerror" in IE6 
        alert(error.error); // i get [object Error] in IE6 
       } 
      }); 
     } 
    }; 

    return this.each(function(){ 
     var self = $(this); 
     methods.getSomeThing(function(response){ // work OK 
      //process response 
      self.html(response.html); // work OK 

      self.append('<a href="javascript:;" id="linkDetail">View Detail</a>'); 

      self.on('click','#linkDetail',function(){ 
       //i make an ajax request here 
       methods.getDetail(function(response){ 
        //failed!! 
       }); 
      }); 

     }); 
    }); 
} 

})(jQuery的);

我使用jsonp跨域進行請求。

它在Firefox,Chrome,IE7,8上運行良好,但在IE6上沒有運氣。

也有一些是錯誤的方法getDetail,當我點擊查看詳情鏈接,我得到的錯誤。

我嘗試用提琴調試它,然後我沒有看到任何請求,當我點擊查看詳細信息,但我仍然有錯誤?!

我無法想象這個問題,有人幫助我,請!非常感謝!

回答

1

我解決了這個問題!我只是想與你分享這個提示。

似乎有些不妥,當事件點擊的是一個錨發射這樣的:

<a href="javascript:;" id="linkDetail">View Detail</a> 

我在這種情況下使用event.preventDefault(),所以該事件的默認動作不會被觸發。

self.on('click','#linkDetail',function(event){ 
     event.preventDefault(); 
      //i make an ajax request here 
      methods.getDetail(function(response){ 
       //failed!! 
      }); 
     }); 

然後,一切工作正常在IE6!