2017-02-10 1 views
0

ich in meiner Ansicht wie diese eine Schleife, die die Liste der Student`s NamenFehler bekommen 404, während ein Array durch Ajax an die Steuerung vorbei

<Table id="your_table"> 
<thead> 
<tr> 
    <th>name</th> 
    <th>grade</th> 
    <th>remove</th> 
</tr> 
</thead> 
<tbody> 
    @foreach (string item in Model) 
    { 
     <tr> 
      <td id="td_name" style="border-left: thin">@item</td> 
      <td><input type="text" id="[email protected]" onclick="" style="width: 40px;border-left: thin" /></td> 
      <td><input type="checkbox" id="[email protected]" value="@item" /></td> 
     </tr> 

    } 
</tbody> 

i das folgende Skript verwenden, erzeugt für den Text zu erhalten die erste Zelle jeder Zeile:

$('#btnDone') 
      .click(function() { 
     //get studentslist 
     function getFirstCellTextList(tableElement) { 
      if (tableElement instanceof jQuery) { 
       // Create an array 
       var textList = []; 
       // Iterate over each table row 
       tableElement.find('tbody tr').each(function() { 
        // Get the first cells's text and push it inside the array 
        var row = $(this); 
        if (row.children('td').length > 0) { 
         textList.push(row.children('td').eq(0).text()); 
        } 
       }); 
       return textList; 
      } 
      return null; 
     } 
     // Get the array 
     var lststudents = getFirstCellTextList($('#your_table')); 
     var result = []; 
     $(lststudents).each(function(index, item) { 
      result.push(item); 
     }); 

     alert(result); 
     $.ajax('/TeacherPages/GetGrades/' + result).done(function() { 
      alert("done"); 
     }); 
    }); 

das Problem ist. Wenn ich das erstellte Array an den Controller senden will, bekomme ich Fehler 404. Da ist etwas falsch mit diesem Array. denn wenn ich ohne Probleme die Ajax funktioniert manuell Werte in das Array hinzufügen

dies meine Aktion ist:

[AttributeRouting.Web.Mvc.GET("/TeacherPages/GetGrades/{result}")] 
    public PartialViewResult GetGrades(string[] result) 
    { 
     return PartialView(); 
    } 

enter image description here

+0

do url nicht hart codieren, tun wie: '.ajax $ ('@ Url.Action ("GetGrades", "TeacherPages")'' und Ihre Aktion zeigen, wie es aussieht –

+0

Sie? kann nicht einfach ein JavaScript-Array an eine URL anhängen - Ihre URL müsste aussehen wie '/ TeacherPages/GetGrades? name = ABC & name = DEF & name = etc', wenn Ihre Methode einen Parameter' IEnumerable Name hätte. Wie sieht Ihr Array aus? –

+0

Es ist wie: Name1.Nachname1, Name2.Nachname2 –

Antwort

1

Sie können eine Javascript-Array Ihre URL nicht nur anhängen. Es wandelt nur die Werte im Array in einen String Komma getrennt, während Sie eine URL zu erzeugen, müssen die zu

$.ajax({ 
    url: '@Url.Action("GetGrades", "TeacherPages")', // don't hardcode your url's 
    type: 'POST', 
    traditional: true, 
    data: { result: result }, 
    success: function (response) { 
     .... 
    } 
}); 

Als Randbemerkung

/TeacherPages/GetGrades?result=someValue&result=anotherValue&result=etc... 

Ändern Sie Ihr Skript ist, Ihre getFirstCellTextList() Funktion zurückkehrt das Array, das Sie wollen, und es ist sinnlos, ein anderes identisches Array daraus zu erstellen. Sie müssen nur

var result = getFirstCellTextList($('#your_table')); 
+0

danke. das hat es getan. aber ist seltsam. Ich habe versucht, Informationen wie diese zu Aktionen in diesem Projekt zu verschiedenen Anlässen ohne Fehler zu senden. –

Verwandte Themen