繁体   English   中英

我可以使用PHP从JQuery AJAX请求返回输出状态吗?

[英]Can I return an output status from a JQuery AJAX request with PHP?

我有一个AJAX请求(使用JQuery),该请求调用执行某些数据库业务的PHP脚本。 请求代码如下:

$.ajax({
    url: "script.php",
    data: { value: value
        },
    type: 'post',
    success: function(output){
        alert(output);
    }
});

但是,我想看看是否有一种方法(除了未更改的输出字符串)还返回状态。 它可以像整数一样简单。 关键是,如果PHP脚本由于任何原因无法连接到mySQL,我想禁用按钮(使用Javascript),但是我仍然希望PHP脚本能够完全输出。

我尝试了错误选项:

...
success: function(output){
        alert(output);
    },
error: function(output){
        // do something
    }

但我不知道如何使PHP显示错误并继续执行脚本的其余部分。 同样,我完全不想篡改输出字符串。

用伪代码,我正在寻找这样的东西:

$.ajax({
    url: "script.php",
    data: { value: value
        },
    type: 'post',
    success: function(output){
        if(output.status == 0){
            alert(output);
        }else{
            // do something else
        }
    }
});

有什么可能的吗? 感谢您提供的所有帮助!

我通常以JSON格式从服务器返回数据。 这样,我可以返回javascript成功函数可能需要的多种不同类型的数据。

基本上在PHP中,你会做类似

$response = new stdClass();
$response->error = 'Could not connect to Mysql';
$response->message = 'Some other text';
echo json_encode($response);

在JQuery中,ajax()方法将自动检测到响应为json并将其解析为javascript对象,因此您可以像这样访问

if (typeof response.error !== undefined) alert(response.error);

有关更多信息,请查看jQuery文档中ajax()方法的dataType参数。

是。 您可以使用HTTP状态代码:

header('HTTP/1.1 500 Internal Server Error');

并为jQuery.ajax()使用jQuery的statusCode属性:

$.ajax({
    // stuff
    statusCode: {
        500: function(data) {
            alert('Something went wrong!');
        }
    }
});

如果您的需求超出了HTTP所能提供的范围,则只需在数据中返回状态码并在success函数中对其进行处理,然后打开data.status

如果我没有误解你的问题...

我通常要做的是将AJAX调用的数据类型设置为“ xml”,然后从我的PHP脚本输出xml。 所以我得到了多个值。 我通常会设置这些属性值。

<result status="success" something="etc" />
// vs.
<result status="failure" error="1" />
// consider 1 as the DB error

使用这种方法,您可能需要在某些PHP函数中使用@标记,以防止输出默认错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM