2009-09-19 83 views
0

我有這個$ .ajax(使用jquery)代碼,它最初是$ .get,現在評論,但由於某種原因,我總是得到錯誤我找不到任何錯誤= /,我忽略了什麼?

$.fn.randomContent = function(options){ 
    var contentArray = new Array(); 
    var dType = "html"; 
    var defaults = { 
     xmlPath: "../xml/client-quotes.xml", 
     nodeName: "quote" 
    }; 
    var options = $.extend(defaults, options); 
    alert(options); 
    $.ajax({ 
     type: "GET", 
     url: "../xml/client-quotes.xml", 
     dataType: "html", 
     success: function(){ 
      $(defaults.nodeName).each(function(i){ 
       contentArray.push($(this).text()); 
      }); 
      $(this).each(function(){ 
       $(this).append(getRandom()); 
      }); 
     }, 
     error: function(){ 
      alert("Something Went wrong"); 
     } 

    }); 
    /*$.get(defaults.xmlPath, function(){ 
             alert("get"); 
     $(defaults.nodeName).each(function(i){ 
      contentArray.push($(this).text()); 
     }); 
     $(this).each(function(){ 
      $(this).append(getRandom()); 
     }); 
    }, type);//$.get*/ 
}; 

這裏的getRandom()函數:

function getRandom() { 
    var num = contentArray.length 
    var randNum = Math.floor(Math.random()*num) 
    var content = ""; 
    for(x in contentArray){ 
     if(x==randNum){ 
      content = contentArray[x]; 
     } 
    }; 
    alert(content); 
    return content; 
} 
+0

對不起,如果我誤讀了,但不應該爲成功函數的參數指定一些東西嗎?成功:功能(內容)並從那裏獲取內容?你在Firebug Net選項卡中遇到任何錯誤嗎?爲什麼當dataType是xml時獲取一個xml文件? –

+0

我沒有得到任何錯誤,也沒有得到網絡選項卡上的其他東西,我的dataType是html,因爲這就是我期待的迴應(據我所知,這是我應該指定的那裏),原本我有:成功:函數(xml),然後$(defaults.nodeName,xml).each(函數(i)...仍然不會工作=/ – Tsundoku

+0

Proxify,請嘗試更改您的方法POST。我想排除瀏覽器緩存GET請求(你根本不區分請求,所以這可能發生) –

回答

1

這可能是瀏覽器正在緩存您的GET請求。在這種情況下,無論是:

  1. 確保服務器控制緩存選項(使用私人或無緩存的緩存控制設置)
  2. 改變你的AJAX調用的方法來POST而不是GET
  3. 通過添加與每個請求

我寧願選擇#1更改查詢字符串參數區分您的GET請求,特別是因爲POST操作意在改變服務器上的東西,所以當我們的行爲做的,我們應該用這種方法實際上修改服務器狀態。另一方面,GET請求只是讀取數據的請求。

我覺得GET請求更適合這個任務,所以在我自己的代碼中,我會阻止響應的緩存。

0

是否該URL必須是絕對的?我從來沒有嘗試過使用「../」做Ajax請求。你有沒有安裝FireBug?您可以檢查服務器的響應標題。

+0

沒關係,我試過了,沒有../,仍然無法工作。是的,我安裝了FireBug,我不沒有任何迴應頭......我沒有我但是爲什麼。 – Tsundoku