J'utilise généralement ajax, mais jamais eu à envoyer des fichiers avec lui auparavant. Ma recherche initiale a indiqué que vous ne pouviez pas envoyer de fichiers avec ajax donc j'ai trouvé et utilisé cette méthode; mais des recherches ultérieures ont indiqué qu'il était possible d'envoyer un fichier avec ajax.Comment faire pour convertir XMLHttpRequest() en ajax
Maintenant, je suis préoccupé par le changement parce que tout fonctionne pour le moment et je ne comprends toujours pas comment html/jscript traite les fichiers. Je me demande donc, comment cette fonction peut-elle être convertie en Ajax d'une manière qui ne m'oblige pas à changer pour changer le code upload_metric_post.php?
function uploadMetric(file){
var MetricID = $("#MetricID").val();
var ReportPeriod = $("#ReportPeriod").val();
if(MetricID == ""){
$("#upload_results").addClass("alert-danger");
$("#upload_results").removeClass("alert-success");
$("#upload_results").html("Please select the MetricID before uploading.");
}else{
var url = 'php/upload_metric_post.php';
var xhr = new XMLHttpRequest();
var fd = new FormData();
xhr.open("POST", url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
// Request went thru ok, handle response.
var response = xhr.responseText;
console.log(response);
var jsonResponse = JSON.parse(response);
if(jsonResponse["success"] == false){
var errors = jsonResponse["msg"] + jsonResponse["error"];
$("#upload_results").addClass("alert-danger");
$("#upload_results").removeClass("alert-success");
$("#upload_results").html(errors);
$("#dropped_rows_panel").html(jsonResponse["bad_rows"]);
$("#start_over_btn").show();
$("#process_btn").hide();
}else if(jsonResponse["success"] == true){
$("#upload_results").addClass("alert-success");
$("#upload_results").removeClass("alert-danger");
$("#upload_results").html(jsonResponse["msg"]);
$("#dropped_rows_panel").html(jsonResponse["bad_rows"]);
$("#start_over_btn").show();
$("#process_btn").show();
}
}
};
fd.append("MetricID", MetricID);
fd.append("ReportPeriod", ReportPeriod);
fd.append("upload_file", file);
xhr.send(fd);
}
}
est ici la norme que je l'utilise tout au long de mon code, ne jamais avoir à eu envoyer un fichier avant, je ne sais pas vraiment comment convertir à mon standard:
function get_assets(display_qty, go_page, sorts, sorts_order, filters_ordered, CallBack) {
$.ajax({
method: "POST",
url: "php/assets_post.php",
data: {
display_qty: display_qty,
go_page: go_page,
sorts: sorts,
sorts_order: sorts_order,
filters_ordered: filters_ordered
},
success: function(result){
CallBack(result);
},
error: function(result){
CallBack(result);
}
});
}
Ne pas réinventer la roue http://www.dropzonejs.com/ – Hackerman
Il y a des questions similaires et si vous regardez cette première, il vous aidera à . Voici le lien https://stackoverflow.com/questions/10654429/converting-xmlhttprequest-into-ajax –
On dirait que les deux méthodes utilisent AJAX pour traiter la requête. xhr.open etc. sont la façon simple d'écrire un appel AJAX. La méthode que vous listez en utilisant $ .ajax est la méthode jquery. Je l'aime, c'est plus propre donc j'écris habituellement le mien en jquery mais ils font la même chose donc si ça marche maintenant ... – Ricktron3000