2013-04-23 42 views
1

Hy傢伙, 我使用jQuery的一些測試,特別是ajax調用。JQuery的Ajax調用與谷歌瀏覽器,但不是與火狐

$('#jsonpbtn').click(function() { 
     $('#text').html('AJAX Call executing......'); 
     $.ajax({ 
      url : 'http://zip.elevenbasetwo.com/v2/US/10010', 
      type : 'GET', 
      success : function(data) { 
       console.log(data.city); 
       $('#jsonparea').html(data.city); 
       $('#text').html('Ajax Call ended'); 
      }, 
      error : function(xhr, status) { 
       alert(status); 
      }, 

     }); 


    }); 

JSON響應爲{城市: 「紐約市」 狀態: 「紐約」,國家: 「美國」}

使用Chrome瀏覽器的一切功能好,其實$('# jsonparea')。html(data.city)在div區域中寫入紐約市。與Firefox我有一些問題,其實div區不寫,調用alert(data.city)我有未定義的值。

回答

1

將數據類型提供給ajax選項以確保jQuery正確檢測數據類型。現在

$('#jsonpbtn').click(function() { 
    $('#text').html('AJAX Call executing......'); 
    $.ajax({ 
     url : 'http://zip.elevenbasetwo.com/v2/US/10010', 
     type : 'GET', 
     dataType: "json", // <---- HERE 
     success : function(data) { 
      console.log(data.city); 
      $('#jsonparea').html(data.city); 
      $('#text').html('Ajax Call ended'); 
     }, 
     error : function(xhr, status) { 
      alert(status); 
     }, 

    }); 

}); 

,如果你的JSON是完全按照你上面貼,你會得到一個parseError,因爲它不是有效的JSON,雖然我懷疑它實際上是有效的,因爲它在鉻工作。

+0

感謝凱文B,你的回答解決了我的問題 – spix 2013-04-23 15:41:39

0

我知道這個'錯誤'。這是因爲如果沒有dataType,Firefox不會解析JSON。將ajax調用中的dataType設置爲'json'使得該代碼對我有用。

你也應該(對IE瀏覽器),包括從json2.js文件:https://github.com/douglascrockford/JSON-js

var data = typeof data != "object" ? JSON.parse(data) : data; 

考慮到這一點,你會得到:

<html> 
    <head> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript" src="json2.js"></script> 
    <script> 
    $(function(){ 
    $('#jsonpbtn').click(function() { 
     $('#text').html('AJAX Call executing......'); 
     $.ajax({ 
      url : 'http://zip.elevenbasetwo.com/v2/US/10010', 
      type : 'GET', 
      dataType: "json", // <--- 
      success : function(data) { 
       var data = typeof data != "object" ? JSON.parse(data) : data; // <---- 
       console.log(data.city); 
       $('#jsonparea').html(data.city); 
       $('#text').html('Ajax Call ended'); 
      }, 
      error : function(xhr, status) { 
       alert(status); 
      } 
     }); 
    }); 
    }); 
    </script> 
    </head> 
    <body> 
    <p id="jsonpbtn">click</p> 
    <p id="text"></p> 
    <p id="jsonparea"></p> 
    </body> 
</html> 

此作品在火狐

+0

我試過你的建議,加入和var data = typeof data!=「object」? JSON.parse(data):data;和使用即9,但我得到一個彈出式錯誤頁面sayng只有「錯誤」。 – spix 2013-04-23 16:16:38

相關問題