2013-01-10 177 views
1

我有一個view稱爲窗體,我正在顯示它有一個dropdownlist。當dropdownlist有不同的選擇,我有一個是被稱爲這樣的jQuery:如何刷新jquery中div的內容?

$(document).ready(function() { 
     $("#myDropDownList").change(function() { 
      $.ajax({ 
       url: '/Home/Forms/' + $("#myDropDownList option:selected").val(), 
       type: 'GET', 
       success: function (data) { 
       // refresh div 
       } 
      }); 
     }); 
    }); 

這裏是我的形式查看:

@model myProject.ViewModels.PageView 

    @section JavaScript 
    { 
     <script type="text/javascript" src="@Url.Content("/Scripts/jquery.myJQuery.js")"></script> 
    } 

    @Html.DropDownList("myDropDownList", Model.selectList) 

    <div id="somediv"> 
     @Html.Label(Model.ValueThatShouldChange) 
    </div> 

所以當Forms動作被再次呼籲,我有ValueThatShouldChange在我的ViewModel中將會改變,它們將顯示在div。這就是爲什麼我想刷新該div,但我不知道如何做到這一點。

我試過$('#yourdivID').html(data)但它加載我的整個視圖在div中。

回答

3

最簡單的方法是使用load()函數加載只是你需要使用它的ID選擇在頁面的特定部分。例如: -

$("#yourDivId").load("/Home/Forms/ #" + $('#myDropDownList option:selected').val()) 

根據您的網頁被建立的方式(你不提供這些信息),您也可以通過包括一個參數來加載你需要的內容改變你的Ajax調用。例如:

$(document).ready(function() { 
    $("#myDropDownList").change(function() { 
     $.ajax({ 
      url: '/Home/Forms/' + $("#myDropDownList option:selected").val(), 
      data: { id : $('#myDropDownList option:selected').val() } 
      type: 'GET', 
      success: function (data) { 
       $('div#yourDivId').html(data); 
      } 
     }); 
    }); 
}); 

而在你的頁面,你只輸出你需要根據ID(如果它的PHP)內容:

<? if (isset($_POST['id'])) { 
     if ($_POST['id'] == "somediv") { ?> 
     <div id="somediv">Just this content should be loaded</div> 
    <? } 
    } 
    else { ?> 
    <!-- your regular html... --> 
? } ?> 
+0

負載剛剛刪除了我在我的div中,但我的AJAX電話是好的。我會接受這個答案,因爲你花時間來解釋它,你不知道我在服務器上做了什麼讓我感到悲傷。當我應該返回一個partialview時,我在部分控制器操作中返回一個視圖。無論如何,與您的答案相結合是正確的答案。 – Pittfall

2

您可以使用

$('#yourdivID').html(data) 

$('#yourdivID').text(data) 

根據您從您的通話

+0

該URL,將重新加載整個視圖,以便將無法工作,因爲它會把我的整個頁面在div再次 – Pittfall

+1

@Pitfall股利爲什麼你會那麼做對整個頁面的Ajax請求?爲什麼不通過在調用中使用參數來檢索所需的內容? – Jules

+0

我想我不確定該怎麼做。我有點新寫jQueries – Pittfall

0

HEY會得到什麼。這是最小,最快的答案! :-)

你想要做的是使用jQuery的快捷方式$ .load()http://api.jquery.com/load/

$(function() { // <-- shortcut for $(document).ready 
    $("#myDropDownList").on('change', function() { 
     $('#target-div').load('/Home/Forms/' + $("#myDropDownList option:selected").val()); 
    }); 
}); 

其中#目標DIV只是你的目標div的CSS選擇器。改變以適應。

1
$(document).ready(function() { 
     $("#myDropDownList").change(function() { 
      $.ajax({ 
       url: '/Home/Forms/' + $("#myDropDownList option:selected").val(), 
       type: 'GET', 
       success: function (data) { 
        $("div").html(data); 
       } 
      }); 
     }); 
    }); 
0

如果你正在尋找只是重繪的內容您可以使用

$('#yourdivID').change();