Ich brauche Hilfe bei der Suche nach einer Alternative zu synchronem jQuery-Ajax
Ich habe eine sehr komplexe Form, die mehrere Registerkarten enthält. Jede Registerkarte enthält eine eindeutigePlupload Instanz (zum Hochladen mehrerer Bilder). Das Formular ermöglicht es einem Benutzer, einen medizinischen Bild- "Fall" hochzuladen, bei dem jeder Fall aus mehreren bildgebenden "Studien" (z. B. CT-Scans) besteht und jede Studie mehrere Bilder enthält.
Wenn der Benutzer auf die Schaltfläche "Senden" klickt, fange ich den Klick mit jQuery ab, weil ich Folgendes tun muss:
Überprüfen Sie, ob die erforderlichen Felder eingegeben wurden[einfach]Holen Sie sich eine eindeutige ID-Nummer von meinem Server. Diese ID-Nummer wird von jeder Plupload-Instanz benötigt, um zu wissen, in welches Verzeichnis hochgeladen werden soll.In meiner Funktion, die beim Absenden des Formulars aufgerufen wird, habe ich den folgenden Codeausschnitt:
var case_id;
// Code to check the required fields are entered
....
// Get the case id number from the server
$.get('ajax/unique-case-id').done(function(data){
case_id = data;
});
// do something with case_id and other things. MUST happen after the ajax call
....
// if there was a problem uploading the images, stop the form from submitting
if (problem_occured) {
return false;
}
Bei meiner aktuellen Logik muss das Skript angehalten werden, bis case_id angezeigt wird. Dies war vor jQuery 1.8 möglich, aber die Eigenschaft $ .ajax () async: false wurde verworfen.
Meine Frage ist zweifach:
Gibt es eine Möglichkeit, das Skript anzuhalten, bis ich die erforderliche case_id erhalte?Wenn nicht, eine Idee, wie ich meine Logik ändern könnte, um dies zu umgehen?Sie fragen sich vielleicht, warum case_id so wichtig ist. Die plupload-Instanzen laden sie hoch, bevor das Formular gesendet wird, und sie benötigen ein Verzeichnis, in das sie hochladen können. Ich möchte, dass die hochgeladenen Bilder in einen Ordner namens case_id auf meinem Server verschoben werden. Auf diese Weise kann das PHP-Skript auf dem Server herausfinden, was mit ihnen zu tun ist, sobald der Rest der vom Formular bereitgestellten Daten eingegangen ist.