2011-06-15 104 views
0

以下調用在Chrome中完美適用,但在其他任何瀏覽器中均失敗。

function getInfo(r,c,f){ 
    return $.parseJSON($.ajax({ 
     url: baseURL + 'somethingAPI/getInfo', 
     data: { 
     "data_r": r, 
     "data_c": c, 
     "data_f": f 
     }, 
     //success: function(data){}, 
     dataType: "json", 
     async: FALSE 
    }).response); 
} 

是的,我使用的是同步的Ajax調用,我相信,因爲我不希望任何其他JS來沒有這個執行和返回數據運行是必要的。雖然,我不完全確定成功回調是否應該發生其他事情。

無論如何,在Chrome中,我得到響應對象(JSON)並且可以很好地訪問數據。

有誰知道我在做什麼錯?

+0

你是否在任何地方使用'console'對象,比如'console.log'或其他東西? – Anurag 2011-06-15 04:37:54

+2

將'FALSE'更改爲'false' – 2011-06-15 04:43:54

+0

@Auurag完全不使用控制檯 – Erik 2011-06-17 03:47:09

回答

1

關於你不知道如何避免async: false的觀點,這就像你想要完成的事情嗎?

function getInfo(r, c, f, callback) { 
    $.ajax({ 
    url: baseURL + 'somethingAPI/getInfo', 
    data: { 
     "data_r": r, 
     "data_c": c, 
     "data_f": f 
    }, 
    dataType: "json", 
    success: callback, 
    }); 
} 

getInfo('foo', 'bar', 'baz', function(response) { 
    console.log(response); 
}); 
+0

謝謝!這正是我試圖找出如何去做的。 – Erik 2011-06-17 04:23:09

0

不是parsingJson關於ajax查詢,這裏是我用來克服這些挑戰

$.ajax({ 
     url: "pagegoeshere.php",     
     timeout: 30000, 
     type: "POST", 
     data: 'data1='+data1+'&data2='+data2, 
     dataType: 'json', 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
     alert("An error has occurred making the request: " + errorThrown) 
     }, 
     success: function(returnjson){                         
      var returnstuff = returnjson.returnstuff; 
      //Do next Javascript step here 
     } 
}); 

您可以運行的成功,隨後在成功的JavaScript/jQuery和「棧」事件共同的語法你的Ajax調用。這樣,如果它有效,它就會繼續。否則,錯誤處理可能以您定義的方式在提供的錯誤部分中發生。我通常在一個點擊處理程序上激發我的ajax調用,但它確實可以像你所選擇的那樣在一個函數中運行它。一定要檢查你的返回JSON(例如可以從你的處理頁面郵寄),以確保它是有效的JSON。 Jsonlint是你的朋友!

我有鉻有效地解析錯誤的HTML和JSON,而其他瀏覽器幾次沒有。我懷疑這是專門導致問題的原因。

相關問題