2015-05-20 2 views
-1

У меня есть список, который содержит модели идентификатор и URL действияJquery Ajax GET не возвращающие данные

@foreach (var dashboard in Model.dashboard) 
      { 
       <li class="drop-text clickMe" data-id="@dashboard.DashID" data-action-url="@Url.Action("GetDashboard", "Dashboard")"> @dashboard.DashName</li> 
      } 

здесь JQuery

$('body').on('click', ".clickMe", function (e) { 

    e.stopPropagation(); 

    var btn = $(this); 

    $.ajax({ 
     url: '<%= Url.Action("GetDashboard", "Dashboard") %>', 
     data: { 
      id: btn.data('id') 
     }, 
     type: 'GET', 
     datatype: 'html', 
     success: function (data) { 
      $('#dash-content').html(data); 
     }, 
     error: function (response) { 
      $('#dash-content').html('Failed'); 
     } 

    }) 

}); 

здесь мое действие

public ActionResult GetDashboard(int? id) 
    { 
     var dashID = id; 
     if (dashID == null || dashID == 0) 
     { 
      dashID = 1; 
     } 

     var getWidgetsQuery = (from widgets in db.widgets 
           where widgets.DashID == dashID 
           select widgets); 

     dvm.widgets = getWidgetsQuery.ToList(); 


     return PartialView(dvm); 
    } 

и в этом случае jQuery должен вставить содержимое действия

<div class="container-fluid" id="dash-content"> 
@Html.Partial("Dashboard", Model); 

В тот момент, когда этот конкретный список нажимается он запускает код JQuery ОК, я использовал поджигатель, чтобы подтвердить это. Однако проблема в том, что jquery, похоже, терпит неудачу, и я не уверен, почему это так.

+0

Как выглядит ответ ajax на консоли или вкладке сети? –

+0

выглядит так: http://gyazo.com/a6ec29dbb8e9bb1ee570eb21ab4291dc \t Это определенно выглядит неправильно. – Johnathon64

ответ

1

попробовать:

$('body').on('click', ".clickMe", function (e) { 

e.stopPropagation(); 

var btn = $(this); 

$.ajax({ 
    url: '<%= Url.Action("Get", "Dashboard") %>', 
    data: { 
     id: btn.data('id') 
    }, 
    type: 'GET', 
    datatype: 'html', 
    success: function (data) { 
     $('#dash-content').html(data); 
    }, 
    error: function (response) { 
     $('#dash-content').html('Failed'); 
    } 

}) 

});

+0

Я не могу понять, как это устраняет проблему, не могли бы вы объяснить, как это исправить? – petelids

1

Его не «тип данных», это «dataType». Может, в этом и проблема.

0

Вы используете синтаксис бритвы на форме:

@foreach (var dashboard in Model.dashboard) 

Но вы затем использовать классический синтаксис для создания URL:

url: '<%= Url.Action("GetDashboard", "Dashboard") %>', 

Вот рассматривается как строковый литерал, в результате чего в запросе на

http://localhost:53658/Dashboard/%3C%=%20Url.Acti ...

(The %3C является кодированным вариантом <, после чего %= то %20 является кодированным пространством).

Вы должны изменить URL на вызов Ajax использовать бритву синтаксис:

url: '@Url.Action("GetDashboard", "Dashboard")', 

Или, как вы установили местоположение на атрибута вы можете взять его оттуда:

url: btn.data('action-url'),