在jQuery post方法中模拟失败案例

时间:2016-02-27 15:27:08

标签: jquery linux perl jquery-ui cgi

我正在使用来自http://www.w3schools.com/jquery/jquery_ajax_get_post.asp

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

服务器端脚本位于perl中。 perl中的print语句位于回调函数的data参数中。我总是获得成功"

基本上我需要将错误条件传播到我无法模拟的前端。我试过死,退出并返回不同的值,但在所有情况下,我得到状态为"成功"。

如何获取此jQuery函数的非成功状态?

是否有更简洁的方法从后端perl服务器接收错误条件?

下面是服务器端的perl代码:

#!/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);
  }
}

通过上面的代码,我已经尝试了返回,die&退出但我总是以状态获得成功。

2 个答案:

答案 0 :(得分:0)

jQuery的post函数返回的状态是HTTP-statuscode。每当您在脚本中打印某些内容时,它将通过您的网络服务器以200 OK状态发送到浏览器。

现在,您可以选择在响应数据中指明错误。 使用json编码的服务器响应的示例:

{
    "error": true
}

另一个选择是将HTTP-Statuscode设置为其他内容(对于您的情况,代码400,这意味着'错误请求'可能是合适的。)

答案 1 :(得分:0)

如果您想测试失败的Ajax调用,您的Pearl代码应返回400,...,403,404或500 HTTP状态代码。