2012-02-07 61 views
0

我有一個div包含學生的時間表,並有一個下拉框供學期選擇。ajax div重新加載正確的數據,但整個網頁內div

一旦他們選擇了學期,有一個ajax文章,但是當它刷新時,它顯示該div內的整個網站(以及該學期的適當時間表)。

它看起來像一個網頁內的iframe,爲在這裏看到:http://cl.ly/Dy3b

這裏是阿賈克斯後腳本

<script type="text/javascript"> 
    $(document).ready(function() { 

    $('#term').change(function() { 

    var form_data = { 
     term : $('#term').val(), 
     ajax : '1' 
    }; 

    var u = $("#schedulePortletURL").attr("href"); 

    $.ajax({ 
     url: u, 
     type: 'POST', 
     data: form_data, 
     success: function(msg) { 
     //alert(u); 
     $('#view-schedule').html(msg); 
     } 
    }); 

    return false; 
    }); 

    }); 
</script> 

如果可能的話,你可以給我的調查什麼來糾正一些建議這個?謝謝

回答

1

我的猜測是,調用服務器返回一個完整的HTML頁面,然後你的代碼將完整的HTML頁面放入view-schedule div。

要解決這個問題,請創建一個新的HTML頁面,您可以調用它包含一個html片段 - 您想要在view-schedule div中生活的塊。然後將schedulePortletURL更改爲指向新的HTML頁面。或者,您可以獲取html(msg)並解析它以提取您感興趣的數據,然後將過濾的數據插入到view-schedule div中。

是否現有的網站必須在全部API,你可以打電話?

+0

至於api,沒有。它提供通過https://wiki.jasig.org/display/PLT/WebProxy這個笨應用程序 - 我所說的ATTR(「HREF」),這樣的JavaScript正確重寫的了AJAX需要張貼到URL。我是新來uPortal,我需要獲得更多的訪問挖掘到主頁的其他部分。 – Brad 2012-02-07 15:43:47

+0

得到什麼回事更好的主意,你可以使用類似Firebug或Chrome開發者工具的工具。然後您可以確切地看到正在向服務器發送POST以及服務器返回的內容。如果發生某種類型的重定向,就像David所說的那樣,這會揭示它。 – CodeThug 2012-02-07 15:59:06

+0

布拉德,我看着WebProxy文檔,並且我會建議在看一對夫婦的選擇它們提供:裁剪配置和後攔截器類。兩者在https://wiki.jasig.org/display/PLT/WebProxy+Portlet+Installation+and+Configuration說明。要查看您需要實現PostInterceptor接口,見http://grepcode.com/file/repo1.maven.org/maven2/org.jasig.portlet/WebProxyPortlet/1.1.4/edu/wisc/my/webproxy/豆/攔截器/ PostInterceptor.java,並看到攔截器類的加載方式,見http://bit.ly/xULSQP – CodeThug 2012-02-11 04:33:14

0

另一種可能性是您的服務器端腳本中的某種錯誤檢查器錯誤地觸發並導致重定向到某個網頁。該網頁然後由AJAX檢索,然後顯示在DIV中。我之前有過這種情況。你應該檢查你的服務器端腳本。

0

如果你沒有對你抓取抓取網頁,應考慮unpure,你應該使用iframe網頁完全控制。請記住,所有以.html(BLOB),您也將獲得javascript代碼,Flash對象等,它們可以用來compromize用戶。

如果您在另一方面也要通過獲取網頁完全控制(我假設),你應該在你的模板中的if語句來檢查,如果該請求是基於AJAX的:

僞服務器端模板代碼:

if not request.is_ajax(): 
    import header.html 
import body.html 
if not request.is_ajax(): 
    import footer.html