10
votes

Jquery ajax post lancer une erreur vide sans faire la demande

J'ai une fonction qui fait une demande Ajax pour toute ancre. La méthode de la demande peut être obtenue ou poster. Dans ce cas, je veux faire un message sans utiliser de formulaire, mais la requête Ajax jette une erreur avant même d'envoyer la demande. L'erreur a la valeur "Erreur" et toutes les variables d'erreur / description de l'échec sont "".

$("body").on("click","a.ajax",function(event) {
    var _elem = getDataElem($(this));
    var _method = getRequestMethod($(this));
    var _partial = getRequestPartial($(this));
    handlers.do_request(event,$(this).attr("href"),_elem, _method, _partial);
});

var handlers = (function() {
    var obj = {};
    obj.do_request = function(event,url,elem_id,method,data) {
        event.preventDefault();

        loadPage(url,elem_id,method,data);
        history.pushState({selector:elem_id,method:method,data:data},null,url);
    };
}());


7 commentaires

Dites-vous que la demande et les variables TextStatus sont vides


Devrait-il POST être capitalisé? C'est dans les docs.


Pouvez-vous publier le code indiquant comment vous appelez loadpage ?


textStatus a la valeur "erreur" et erreur a la valeur ""


Ajouté le code qui appelle la fonction de chargement


Connectez-vous les valeurs de paramètre dans Loadpage à la console.


Essayez de faire la demande dans un navigateur qui vous permet de déboguer des demandes de réseau (c'est-à-dire chrome) ou d'exécuter la demande via un proxy (c'est-à-dire Charles) et voyez si une demande est effectuée, et si oui quel est le statut de cette demande.


4 Réponses :


0
votes

Juste une suppose, mais dans le docs Le paramètre Type est dans toutes les capsules, c'est-à-dire 'post' et pas 'post' .


1 commentaires

JavaScript est sensible à la casse, alors les deux ne devraient pas nécessairement travailler. J'ai vérifié la source de jQuery ( GITUB.COM/JQUERY/JQUERY/ blob / maître / src / ajax.js # L455 ), et on dirait qu'ils convertissent le paramètre type en majuscules, donc je suppose que cela n'a pas d'importance.



0
votes

Essayez:

function loadPage(url,elem_id,method,dat) {
    ajaxLoading(elem_id);
    $.ajax({
        type: method,
        url: url,
        data: dat,
        success:function(data){
            $("#"+elem_id).html(data);;
        },
        error:function(request,textStatus,error){
            alert(error);
        }
    });
 }


1 commentaires

Essayé cela maintenant, pas de succès. Toujours jetant une erreur sans même envoyer la demande. Merci pour la réponse bien que.



0
votes

ne pouvait pas résoudre le problème, ils ne pouvaient pas non plus trouver la raison pour laquelle cela se produisait. Bien que j'ai trouvé un moyen autour, en utilisant une forme vide cachée au lieu d'une ancre avec la méthode 'Post'. Pour une forme, la fonction fonctionnait bien.

Merci pour les réponses


0 commentaires

2
votes

Je viens de ressentir ce problème et après une heure ou deux, pensez essayer de définir le cache sur false. Cela corrigé pour moi. XXX

Malheureusement, lorsque j'ai retiré le cache, ma demande fonctionnait comme si elle n'avait jamais eu de problème. Il semble que la définition cache: false a fait quelque chose "Cliquez".

OH bien.


1 commentaires

Votre réponse au serveur ne doit pas autoriser la mise en cache si les données que vous essayez de récupérer (en supposant un obtenir , bien que la question soit sur un post ) est dynamique. Ensuite, le cache : faux ne doit pas être requis.