2011-02-01 48 views
1

我有一個使用jQuery的頁面,我想檢測一個外部文件是否存在。如果是這樣,我想把它加載到一個div中,但如果它不是,我希望它什麼也不做。如何包含外部html如果存在,否則什麼都不做?

我使用這個代碼和它的作品加載該文件,但它加載一個404錯誤頁面,如果外部文件不存在。我對jquery很新,希望得到任何幫助。此外,檢查文件的方法需要具有rootdomain +,以便可以在不進行編輯的情況下將代碼插入多個站點。

$(function() { 
     $('#test').load('/pages/test.html'); 
}); 

任何幫助將不勝感激。我一直在尋找幾天,但我發現的唯一的東西是頭檢查腳本,如果URL無效,則無法做任何事情。我很想知道如何自己寫這個簡單的代碼,但現在它已經超出了我的頭腦。 :)

傑裏

回答

4

嘗試使用ajax()方法,而不是load(),並在成功回調設定html()

$(function() { 
    $.ajax({ 
     url: "/pages/test.html", 
     cache: false, 
     dataType: "html", 
     success: function(html){ 
      $('#test').html(html); 
     } 
    }); 
}); 
+0

好吧,很明顯,我做錯了什麼,因爲沒有一個例子是在這裏爲我工作。實際的代碼不會使用帶.html擴展名的網址。該網站的後端結束了沒有後綴的命名頁面「pages/test /」。如果這仍然有效?因爲它不。 – Jeri 2011-02-02 11:31:05

+0

更新了我的答案。添加了`dataType`的設置。試試看... – hunter 2011-02-02 13:03:06

2

使用一個Ajax調用:

$.ajax({ 
    url: '/pages/test.html', 
    success: function(data){ 
     $('#test').html(data); 
    }, 
    statusCode: {404: function() { 
    $('#test').html('Unable to retrieve data. Please try again'); 
    } 
}); 
0

我曾考慮做類似的事情。我會用Ajax解決它。谷歌搜索產生的代碼別人已經內置在 [XUL的Ajax網站] [1],似乎你想要做什麼 - 使用Ajax加載其他頁面OK假設。

帶着幾分編碼你可以使用這一招不顯示任何內容,消息,或不同的頁面,如果你想要一個也沒有找到......眼下,該代碼會顯示404,因爲它的存在,但這是一個相當微不足道的變化。事實上,如果您下載頁面底部的腳本存檔,然後打開responseHTML.js文件,則可以取消單行註釋,以便在其他頁面不存在時不執行任何操作。

該代碼示例使用硬編碼的div的名字,但你可以很容易地改變那些是你自己的,或修改函數接受它們作爲參數。我打算在不久的將來在我自己的網站上使用此代碼,如果有其他網頁停用,需要重定向。

我想不出一個好辦法做到這一點沒有做與阿賈克斯的東西...

嗯。我在工作時分心,並且鏈接沒有加載。其他答案基本相同,甚至更簡單的jQuery。原始的javascript對於那些沒有使用jquery的頁面來說也很好,所以仍然可能值得在這裏鏈接。

http://www.xul.fr/ajax/responseHTML-attribute.html

相關問題