WinFuture-Forum.de: [gelöst]Ajax.Beginform, OnSuccess funktioniert nicht richtig - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

[gelöst]Ajax.Beginform, OnSuccess funktioniert nicht richtig MVC2,C#4.0,JQuery


#1 Mitglied ist offline   EliteU2 

  • Gruppe: aktive Mitglieder
  • Beiträge: 595
  • Beigetreten: 21. Februar 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Ruhrpott

  geschrieben 22. Februar 2011 - 14:37

Hey Leute

Ich benutze Asp.Net MVC 2 mit C# 4.0 und die OnSuccess funktion ruft eine Jquery Funktion auf.
Ich habe folgendes Problem in meiner Suchfunktion:

Ich habe im View ein Formular darüber meine Jquery Funktion und unter dem Formular mein PartialView das ich aktualisiere. Die Juery funktion soll erst aufgerufen werden, wenn das PartialView vollständig geladen wird, aber leider funktioniert das nicht richtig. die JQuery Funktion wird aufgerufen bevor das Partial View geladen wird und ich würd gern wissen warum.
Die Jquery Funktion makiert den text farbig nachdem ich Suche.
Der gesuchte Text wird für 1 sec farbig makiert dann wieder aufgehoben und danach wird erst gefiltert und ausgegeben.
OnComplete habe ich auch schon getestet, gleichen Ergebnis.
Irgendwie ist die Ajax Aktualisierung wohl nocht nicht ganz abgeschlossen.

Ich hoff man kann mir folgen :D

Hier der Quellcode...aber nur Teile davon..

Zitat

#Script
<script type="text/javascript">

function searchtext() {
var st = $('#search').val(); // Mein Suchwort
$(".Searchoutput").highlight(st); //Plugin um Text farbig zu makieren
}
</script>



#View
<% using (Ajax.BeginForm("Mytermsearch", FormMethod.Post, new AjaxOptions { UpdateTargetId = "termdiv", OnSuccess = "searchtext" }, new { @id = "ajaxform" })) %>
<%{ %>

...formular....

<%} %>

#PartialView
<div id="termdiv">
<%Html.RenderAction("Mytermtable", "Home"); %>
</div>

#Inhalt im Partial View mit Klassenname wo die Ausgabe stattfindet
<%foreach (var m in (List<dynamic>)ViewData["terms"])%> //Foreach Schleife für die Datenausgabe
<%{ %>
<table>
<tr>
<td class="Searchoutput">
<%=Html.Encode(m.German)%>
</td>
<td class="Searchoutput">
<%=Html.Encode(m.Englisch)%>
</td>
</tr>
</table
<%}%>


Ich hoff jemand kann mir helfen...der sich mit der Materie auskennt

Dieser Beitrag wurde von EliteU2 bearbeitet: 28. Februar 2011 - 11:55

0

Anzeige



#2 Mitglied ist offline   EliteU2 

  • Gruppe: aktive Mitglieder
  • Beiträge: 595
  • Beigetreten: 21. Februar 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Ruhrpott

geschrieben 28. Februar 2011 - 11:54

Fehler gelöst
das problem lag an ein anderem script

wenn man in einer textbox etwas hineinschreibt und das sofort per submit übertragen werden soll, darf man im IE nicht per
$('#Ajax ID').submit();
die übertragung einleiten, sondern man muss ein versteckten submit button bauen
<input type="submit" value=" " class="send" id="mySubmit" style="display:none"/>
und der wird bei einer eingabe sofort per
$('#mySubmit').click();
betätigt.

Zitat

<script type="text/javascript">
$(document).ready(function () {
$('#search').bind('keyup', function () {
$('#mySubmit').click();
});

function searchtext() {
var st = $('#search').val();
if (!(st == ""))
$(".Searchoutput").highlight(st);
}
</script>

<% using (Ajax.BeginForm("Actionname", FormMethod.Post, new AjaxOptions { UpdateTargetId = "termdiv", OnSuccess = "searchtext" }, new { @id = "ajaxform" })) %>
<%{ %>


..............Formular.............


<input type="submit" value=" " class="send" id="mySubmit" style="display:none"/>
<%} %>


<div id="termdiv">
<%Html.RenderAction("Actionname", "Controller"); %>
</div>



Alle anderen Browser kommen mit $('#Ajax ID').submit(); klar, nur der Internet Explorer nicht.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0