Javascript jqueryajax-基于结果的分支

Javascript jqueryajax-基于结果的分支,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我使用jQuery设置进行了第一次AJAX调用,并且运行良好。我需要做的最后一个更改是检查PHP页面中调用的任何数据库错误的结果,并在需要时显示错误 以下是我当前的Javascript: <script type="text/javascript"> $(document).ready(function() { $("#storeManager").change(function(){ var storeManager = $("#st

我使用jQuery设置进行了第一次AJAX调用,并且运行良好。我需要做的最后一个更改是检查PHP页面中调用的任何数据库错误的结果,并在需要时显示错误

以下是我当前的Javascript:

<script type="text/javascript">
    $(document).ready(function() {
        $("#storeManager").change(function(){
            var storeManager = $("#storeManager").val();
            $.post('editProject.php', { type: 'storeManager', storeManager: storeManager, id: '1E1DDA14-D2C6-4FC8-BA5F-DBCCC7ABAF7F' }, function(data) {

                if (data.error) {
                    $("#storeManagerRow").addClass("danger");
                    $("#ajaxAlert").addClass("alert alert-danger");
                    $("#ajaxAlert").addClass("danger").html(data.text);
                } else { 
                    $("#storeManagerRow").addClass("success");
                    $("#storeManagerRow").removeClass("danger");
                    $("#ajaxAlert").addClass("alert alert-success").html(data.text);
                }

            }).fail(function (xhr) {
                // no data available in this context
                $("#storeManagerRow").addClass("danger");
                $("#ajaxAlert").addClass("alert alert-danger");
                //display AJAX error details
                $("#ajaxAlert").html(xhr.responseText);
            });
         });    
    });
</script>
对于错误,请执行以下操作以获得成功结果:

{"error":"false","text":"Database Updated Successfully"}
目前,is从不为if(data.error)分支分支,它总是分支到else分支,并且也不显示文本值。如果我改变:

$("#ajaxAlert").addClass("alert alert-success").html(data.text);
致:

它会将以下内容插入ajaxAlert div:

{"error":"true","text":"Error: Edit Record Error Unknown error (8003)"}

我对jQuery和AJAX不熟悉,一开始就解决了问题-我感觉自己很接近,但不明白为什么它没有为错误分支,为什么它没有显示editProject.php脚本中的错误或成功结果的文本值?

您的
数据。error
属性包含一个非空字符串,这将始终评估为真

而是使用:

if (data.error === 'true') {
    // ...
}
或者,将JSON更改为包含布尔文字而不是字符串:

 {"error":true,"text":"Error: No Project ID Found (Missing Parameter)"}

您的JSON有一个字符串literal
“error”:“false”
(这是一个真实值)而不是布尔值literal
“error”:false
(这可能是falsy)。

问题是
数据的值。error
。。。它应该是一个布尔值。。。一丝不挂


因此,不要在PHP中指定
'true'
,而是指定布尔值
true

尝试以下两件事

  • 解析JSON响应,
    data=JSON.Parse(data)

  • 将if(data.error)替换为if
    (data.error==“true”)

  • if (data.error === 'true') {
        // ...
    }
    
     {"error":true,"text":"Error: No Project ID Found (Missing Parameter)"}