2010-01-09 46 views
1

我正在使用load方法來替換一個div的內容。django ajax load() - 可能更新兩個或更多的div,部分返回的django視圖上下文?

$('#ajax_tbody_result').html(' ').load(url); 

現在我想知道是否有可能調用的URL,得到的返回值,在我的模板他們分裂和更新兩個或更多的div。

因此,解決的辦法是從返回的django上下文中取出一些對象,將其拆分並用正確的內容更新div。這是返回的上下文:

context = { 
      'object_list' : contact_list_page, 
      'headers': headers, 
      'filter_by_classification_form': filter_by_classification_form,    
      'filter_by_address_form': filter_by_address_form, 
      'filter_by_company_form': filter_by_company_form, 
      'urlquerystring_previous_page' : urlquerystring_previous_page, 
      'urlquerystring_next_page' : urlquerystring_next_page, 
     } 

編輯:解決的辦法:

分手了一個jQuery GET請求到其各部分的HTML響應,並更新html的相應部分。你可以這樣做:

$.get(url, function(results){ 
     var table = $("table", results); 
     var spans = $("span.step-links", results); 

     //update the ajax_table_result with the return value 
     $('#ajax_table_result').html(table); 
     $('.step-links').html(spans); 

    }, "html"); 

結果對象是呈現給.html的django模板。從這個.html返回,我將我需要的東西(表格和跨度與id步驟鏈接)並更新我的頁面中的相應對象。

+0

我認爲這是一個比django問題更多的jQuery問題。 – 2010-01-09 13:55:04

+0

更簡單的路線可能是創建一個url-> view->模板,看起來你想要爲每個div。你可以分成兩個視圖,或者使用查詢字符串來確定在一個視圖中完成的操作。那麼你可以回到你的.load()方法並加載適當的div的相應url。 – 2010-01-09 14:01:29

+0

是的,我想過這個。但是這會導致兩個Ajax調用,這對我來說似乎不是很整潔。 – 2010-01-09 14:18:38

回答

2

使用

$.get(url, [{key:value}], function(data){ 
    //data is the entired contents of going to that url. 
    //split it up here and do your stuff 

    $('#div1').html(piece1); 
    $('#div2').html(piece2); 
}); 

http://docs.jquery.com/Ajax/jQuery.get

編輯:你的問題更仔細地看,你會還需要創造哪些你與url調用,這將使所有視圖Django模板你想要的信息的JavaScript功能。

+0

我只是在http://docs.jquery.com/Ajax/jQuery.getJSON。使用get或getJSON更好嗎? – 2010-01-09 13:55:16

+0

如果你正在處理JavaScript中的JSON,那麼使用getJSON。但是你必須讓你的視圖返回JSON。 Django有一些函數返回JSON格式的數據,但我認爲這不適用於這種情況。 (這將取決於你需要的上下文的哪些部分) – 2010-01-09 13:58:47

+0

好的謝謝。我的視圖返回一個ajax調用的模板。用你的代碼部分:.html(piece1)。我是在django上下文還是在返回模板的一部分上引用?我的看法像這樣返回它:return render_to_response(template,context, context_instance = RequestContext(request)) – 2010-01-09 14:05:58

0

我覺得自己像一個破紀錄的答案,但你真的想看看jQuery Taconite Plugin。它可以滿足您的要求並提供500%以上的服務。結帳的例子,並感到驚訝。我不會輕易使用這個詞,但這是一個真正的優雅的解決方案。

+0

那麼你如何使用這個與Django? – rogerdpack 2013-12-11 17:54:37

+0

對不起,我很少再使用它了。在jQuery中使用taconite只需要創建一個URL映射和視圖來處理請求。由於響應採用XML,所以創建格式錯誤的響應很容易,所以我有一個支持類可以在Django中使用它。給我發電子郵件(列在我的個人資料中),我會寄給你一份副本。文件頂部有一些輕量級文檔。 – 2014-01-03 22:04:33