2015-10-27 59 views
-1

我是新來的web開發和我的ajax調用動態加載頁面有問題。ajax與aspnet mvc永遠不會工作

這是我的JS:

$(function() { 
$('.trEnfant').on('click', function (e) { 
    var id = $(this).attr("id"); 

    $.ajax(
    { 
     type:"Get", 
     url: '@Url.Action("DossierEnfant", "Enfant")', 
     data: {enfantId : id}, 
     success: function (result) 
     { 
      $('#divDossierEnfant').html(result); 
     }, 
     error: function (e) 
     { 
      alert('ca marche po...'); 
     } 
    }); 
}); 
}); 

現在,這是我的CONTROLER:

public ActionResult DossierEnfant(string enfantId) 
{ 
    DossierEnfantViewModel model = new DossierEnfantViewModel(); 
    model.Enfant = personneAppService.RecupererEnfant(new Guid(enfantId)); 
    return View(model); 
} 

最後我CSHTML:

<div> 
<div class="row"> 
    <div class="panel panel-default"> 
     <div class="panel-heading"> 
      <h3 class="panel-title">Enfants</h3> 
     </div> 
     <div class="panel-body"> 
      <div class="row"> 
       <div class="col-lg-2"> 
        <button class="btn btn-primary btn-block"><i class="fa fa-plus-circle"></i> @L("Ajouter")</button> 
       </div> 
       <div class="col-lg-10"> 
        <table class="table table-bordered table-condensed table-hover"> 
         @foreach (var item in Model.Enfants) 
         { 
          <tr [email protected] class="trEnfant"> 
           <td class="col-md-6">@item.Nom</td> 
           <td class="col-md-5">@item.Prenom</td> 
           <td class="col-md-1 text-center"> 
            <a class="btn btn-warning btn-xs" role="button" href="#"><i class="fa fa-minus-circle"></i></a> 
           </td> 
          </tr> 
         } 
        </table> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
<div id="divDossierEnfant" class="row"> 
</div> 

我試圖去住HTML .action和它工作正常,但我的Ajax調用總是產生錯誤...

這是我的看法文件夾: viewfolder

的想法?

+5

,什麼是錯誤? – celerno

+0

他們產生了什麼錯誤?你把JS放在哪裏?默認情況下,ASP.NET MVC項目包含jQuery庫,但您必須將'@section Scripts {}'內的特定頁面的視圖中的任何腳本放入。這是因爲jQuery庫的引用包含在所呈現的HTML底部附近;你的腳本只有在jQuery引用之後纔會起作用,但只有當你把它放在腳本部分時纔會發生。 –

+0

我總是有一個未找到的錯誤...和警報顯示 – lolo

回答

0

它看起來像你有一個單獨的JavaScript文件,並且你在上面顯示的JavaScript不在你的視圖中。如果是這種情況,則不能使用Url.Action,因爲這隻適用於剃鬚刀視圖。

在這種情況下,您有兩種選擇,您可以將javascript移動到您的視圖,或者您可以添加隱藏到您的視圖,存儲Url.Action的值,並在JavaScript中調用該元素。

在您看來,加:

<input type="hidden" id="url" value="@Url.Action("DossierEnfant", "Enfant")" 

而在你的Ajax調用:

$.ajax(
{ 
    type:"Get", 
    url: $('#url').val(), 
    data: {enfantId : id}, 
    success: function (result) 
    { 
     $('#divDossierEnfant').html(result); 
    }, 
    error: function (e) 
    { 
     alert('ca marche po...'); 
    } 
});