2016-02-27 1 views
1

J'utilise la méthode post jQuery de: http://www.w3schools.com/jquery/jquery_ajax_get_post.aspcas d'échec Simuler méthode post jQuery

$("button").click(function(){ 
    $.post("demo_test_post.pl", 
    { 
     name: "Donald Duck", 
     city: "Duckburg" 
    }, 
    function(data, status){ 
     alert("Data: " + data + "\nStatus: " + status); 
    }); 
}); 

Le script côté serveur est en Perl. Les instructions d'impression de perl sont récupérées dans le paramètre de données de la fonction de rappel. Et je reçois toujours le statut de "succès"

Fondamentalement, j'ai besoin de propager une condition d'erreur à l'interface que je ne suis pas capable de simuler. J'ai essayé mourir, sortir et revenir avec des valeurs différentes mais dans tous les cas je reçois le statut de "succès".

Comment puis-je obtenir le statut de non-succès pour cette fonction jQuery?

Aussi existe-t-il un moyen plus propre de recevoir la condition d'erreur du serveur perl principal?

Voici le code perl sur le côté serveur:

#!/usr/bin/env perl 
#|++ 

use CGI; 
use CGI::Carp qw(fatalsToBrowser); 

my $q = new CGI; 

main(); 

sub main() 
{ 
    if($q->param()) 
    { 
    my $name = $q->param('name'); 
    my $city = $q->param('city'); 

    print('You entered'.$name.' and '.$city); 
    } 
} 

Avec le code ci-dessus, je l'ai expérimenté avec retour, mourir & sortie mais je reçois toujours le succès que le statut.

+2

Vous aurez besoin d'afficher du code Perl si vous voulez que nous ayons une idée de ce qui se passe. –

+1

Voir https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html, http://stackoverflow.com/questions/15656514/return-http-error-code-from-cgi-c-module – guest271314

+0

Voir http://api.jquery.com/jQuery.post/ cela pourrait vous être utile – Harish

Répondre

0

Le statut renvoyé par la fonction de publication de jQuery est le code d'état HTTP. Chaque fois que vous imprimez quelque chose dans votre script, il sera envoyé au navigateur par votre serveur Web avec le statut 200 OK.

Maintenant, une de vos options est d'indiquer l'erreur dans les données répondues. Exemple avec un serveur-réponse codé JSON-:

{ 
    "error": true 
} 

Une autre option consiste à définir le HTTP statusCode à autre chose (pour votre cas, le code 400, qui signifie « Bad Request » pourrait être le cas).

+0

corrige ta syntaxe dans json: utilise pas "=", mais ":" pour séparer la clé de la valeur. Et "," après la dernière paire clé-valeur est l'erreur de syntaxe. –

0

Si vous souhaitez tester un appel Ajax échoué, votre code Pearl doit renvoyer un code d'état HTTP 400, ..., 403, 404 ou 500.

+0

Comment faire pour que perl renvoie le code d'état de la réponse HTTP? – Scorpious

+1

Je ne suis pas familier avec Perl, mais voir: http://stackoverflow.com/a/19873204/1164005 –