Gleiche Ajax zweimal angerufen..JQuery
ich habe eine Frage in JQuery..ich m mit $.ajax()
in meinem code (Function 1)
zu senden, der Feldname und der Sequenz-Anzahl auf die ctrller, der bekommt seine Daten von $_POST['name']
und $_POST['sequenceno']
und updates der Feldname in der Tabelle mit der Reihenfolge nicht gegeben..Und generiert die Vorschau-Display-Panel mit der eingefügten Felder ..
Jetzt versuche ich, die ändern Sie das Feld name wieder tat ist Nun, wenn ich auf den erzeugten display-Felder die entsprechenden Einstellungen wird geöffnet und ich werde versuchen, ändern Sie den Namen des Feldes nun(Function 2)
Beide Function1
und Function2
sind die gleichen ..In der Function1
schicke ich die Feldnamen und die Reihenfolge keine
In die Funciton 2,ich will senden den gleichen Feldnamen und (aber der andere Wert)sequenceno..
Aber in Function1 (sequenceno ist der counter-Wert)
In der Erwägung, dass in der Function2 (sequenceno ist der angeklickte div id (display))
Wie kann ich mit der gleichen func für beide ..Oder könnte ich brauchen, verwenden Sie separate funcs..
Sogar ich habe versucht, mit 2 separaten funcs mit unterschiedlichen urls aber nicht korrekt aktualisiert
Mein code ist
//This is what i insert the field initially
$(".TextFieldSettings #fieldTitle").change(function (){
fieldname=$(".TextFieldSettings #fieldTitle").val();
$.ajax({
type: "POST",
url: "./server",
data: "name="+fieldname+"&sequenceno="+counter,
success: function(msg){
}//success
});//ajax
});//change
//After inserting to get the updated values in JSON format
var htm = $.ajax({
type: "GET",
url: "./viewforms",
async: false
}).responseText;
var myObject = eval('(' + htm + ')');
gettype=myObject.attributes[0]["type"];
getlabel=myObject.attributes[0]["labels"];
//showing in my DisplayPanel view
$("#labelstr"+counter+"").html(getlabel);
});//change
Nun
Wenn ich auf dem DisplayPanel Ansicht
$("#displayPanel div").live("click", function(){
div_id=$(this).attr("id");
var htm = $.ajax({
type: "GET",
url: "./getattributes/"+div_id+"",
async: false
}).responseText;
var myObject = eval('(' + htm + ')');
gettype=myObject.attributes[0]["type"];
getlabel=myObject.attributes[0]["labels"];
getsize=myObject.attributes[0]["size"];
if(gettype=='Text')
{
$(".TextFieldSettings").show(function(){
$(".TextFieldSettings #fieldTitle").val(getlabel);//showing the updated value
if(getsize=='100')
{
$("#fieldSize option:contains(Small)").attr("selected",true);
}
else if(getsize=='200')
{
$("#fieldSize option:contains(Medium)").attr("selected",true);
}
else
{
$("#fieldSize option:contains(Large)").attr("selected",true);
}
//Again i m changing the fieldname
$(".TextFieldSettings #fieldTitle").change(function (){
fieldname=$(".TextFieldSettings #fieldTitle").val();
alert(div_id);
$.ajax({
type: "POST",
url: "./editsettings",
data: "name="+fieldname+"&sequenceno="+div_id,
success: function(msg){
}//success
});//ajax
});//change in text value later*/
});//show
}//if type = TEXT
});//displaypanel Div clicked
Aber jetzt wenn ich versuche, ändern Sie den Feldnamen wieder Schreibe ich ein weiteres POST-Funktion editsettings
aber die Ausführung kommt in Func1
(änderung zunächst) statt Func2
(ändern der Feldname wieder)...
Bitte jemand die Antwort für diese....
Hinweis:
$(".TextFieldSettings #fieldTitle").change()
ist verwendet zweimal in meinem prg ..Kann sein, weil von diesem die Aktualisierung schief geht
- Welcher Teil ist eigentlich die Frage hier? Wollen Sie wissen, ob Sie nur eine einzelne re-usable Funktion vs zwei verschiedene Funktionen?
- Zwei verschiedene function () Aber die beiden Namen ist wie $(".TextFieldSettings #fieldTitle").change(function(){}); Gleiche Sache, aber einem anderen Zweck
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie es scheint, das problem ist, dass die beiden event-Handler werden Schießen, und Sie wollen nur das letztere, um das Feuer.
Den jQuery .change () - Funktion fügt einen Ereignishandler für das change-Ereignis. Es ersetzt nicht bereits bestehende. Wenn Sie möchten, entfernen Sie den vorherigen handler, brauchen Sie etwas wie:
bevor Sie legen einen neuen handler.
bitte beachten Sie, dass ich nicht sicher bin, ob das funktioniert (ich fand es von der api-docs) und ich kann nicht testen Sie es jetzt. Aber die Allgemeine Idee ist, dass, wenn Sie wollen, dass ein event-handler reagiert auf ein Ereignis, müssen Sie die handler.
Sind Sie sicher, dass Sie auch nicht das gleiche Skript zweimal? Zum Beispiel:
Viewstart:
Teilansicht:
Ich hab das gleiche problem und habe es gelöst durch löschen der min-version.
Ich hoffe das hilft.
Ich habe einen anderen Fall. Ich bekam zweimal post verschicken ajax beim binden auf eine Taste klicken. Es verursacht durch ich habe zwei id, die gleichen Namen, damit der trigger erkannt doppelt.
Arbeite ich an einem Projekt, das mit Amazon web service EC2. Ich bin das hochladen einer großen Datei (bis zu 150 MB). Ajax verwenden, auf dem front-end. Und spring MVC auf backend.
Mein problem ist Frühling controller "uploadFile ()" - Methode zweimal aufgerufen. Ich setze einen Haltepunkt in meinem javascript, javacript Methode nicht zweimal aufgerufen. Dies geschieht nur auf AWS-Instanz, nicht auf meinem lokalen. Und es ist rund 90 Sekunden zwischen uploadFile () - Methode aufrufen.
Dann die ajax-callback-Fehler bekommen. Statuscode= 0, Fehler =""
Firefox-Firebug sagt "abgebrochen"
Chrome überprüfen gibt mir "net::ERR_EMPTY_RESPONSE"
Obwohl ich es sein könnte, wo einige ajax-Aufruf im backend doppelt.
Ich Suche viele Lösung auf stackoverflow. wie
1. /add e.preventDefault() und e.stopImmediatePropagation();
2 ./oder ändern maxSwallowSize in tomcat/confg/server.xml
3. $("#uploadFileForm").unbind('submit').submit(function (e)
4. ändern async auf true und fügen timeout-Wert in die ajax-Methode
type: 'POST',
timeout: 60000,
async: true,
Keiner der oben genannten Arbeit.
Endlich habe soltion es durch ändern der idle-timeout-in der ELB, 600 Sekunde. Und meine controller nicht zweimal aufgerufen.
http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html
https://aws.amazon.com/blogs/aws/elb-idle-timeout-control/
Zunächst möchte ich Dank an alle Menschen, die Beantwortung von Fragen auf stackoverflow, die helfen , eine Menge, eine Menge, eine Menge.
Die Lösungen sind nicht falsch , nur nicht mein Fall. Und in Diesem Problem nehmen Sie mich 3 Tage. Ich hoffe, es kann Ihnen helfen, Frage.
"ajax Feuer - /call-zweimal", "Spring-controller-Aufruf zweimal" "Ajax-timeout"