2011-09-07 128 views
0

我想在我的頁面上包含一個函數,用來檢查用戶是否有Gravatar帳號和他們的電子郵件。如果是,他們應該顯示該圖片,如果不是,則應該給出其他選項。Gravatar VS JQuery Ajax ...幫助?

我試圖做到這一點,如下所示:

$.ajax({ 
     url: 'https://secure.gravatar.com/' + md5(user.email) + '.json', 
     method: 'GET', 
     timeout: 4000, 
     success: function successFn() { 
      doGravatarStuff(); 
     }, 
     error: function errorFn(response, status, error) { 
      console.log(response.status); //debug 
     } 
    }); 

這總是返回0在Internet Explorer中的錯誤狀態,我似乎無法找出原因。我嘗試將'dataType'更改爲'json','html'等,但這似乎沒有幫助。

另外,也許這是一個相關的問題,如果我測試這個FF或Crome,用戶真的沒有一個帳戶,它會返回404錯誤根據'淨'標籤讀數

404 Not Found 649ms 

但 'response.status' 似乎仍然是0

任何想法嗎?提前感謝!

回答

4

通常,跨域AJAX請求被拒絕,因爲這是一件安全事情。看到這篇博客文章:http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/

你試過jsonp數據類型?當我訪問twitter的推文json feed時,我使用jsonp。

例子:

var urls = "http://twitter.com/status/user_timeline/" + username + ".json?count=" + pageSize + "&page=" + currentPage; 

    $.ajax({ 
    beforeSend: function() { 
     $("#ajax-load").fadeIn() 
    }, 
    url: urls, 
    cache: true, 
    type: 'GET', 
    dataType: 'jsonp', 
    success: twitterCallback2 
    }); 

    }; 
+0

嘿,現在它工作。我曾嘗試JSONP,但它沒有奏效。想必我會輸入一個錯字或其他東西。無論如何,它現在工作正常,謝謝! * acceptify !! * – HumanCatfood

+0

是的,我認爲JSONP在響應方面有點尷尬? _「從jQuery 1.4開始,如果JSON文件包含語法錯誤,請求通常會**無提示地失敗**。」_可能遇到過這個問題。謝謝=) – Benno