Ajax 调用忽略我的 if 语句


ajax call ignoring my if statement

>我的页面上有一个模态,它通过ajax将一些数据提交到我的Laravel应用程序,然后对其进行验证以确保存在字段。

如果该字段不存在,则Laravel将返回具有错误状态的json响应。

然后,我正在检查ajax调用的成功部分中的状态,如果是这种情况,则显示错误消息。

但是,即使我返回错误状态,我的 if 语句似乎缺少此状态并继续该语句。

以下是整个脚本:

<script>
    $(document).ready(function () {
        $("#addShiftButton").click(function(){
            $.ajax({
                type: "POST",
                url: "calendar/addhours",
                data: {
                    'name':$('#name').val(),
                    'start_time':$('input[name=start_time]').val(),
                    'finish_time':$('input[name=finish_time]').val(),
                    'add_shift_date':$('#add_shift_date').val(),
                    'breaks':$('input[name=breaks]').val(),
                    'shift_status':$('#shift_status').val()
                },
                success: function(data){
                    if (data.status == "error")
                    {
                        $("#error").show();
                    }
                    else
                    {
                        $('#addShiftModal').modal('hide'); //hide popup  
                        //location.reload();
                    }
                },
                error: function(){
                    alert("Error");
                }
            });
        });
    });
</script>

我已经检查了呼叫,它已成功发出,并且收到如下 json 响应:{"status":"error"} .

但是,我的if语句的else部分正在执行。谁能明白为什么?

<script>
$(document).ready(function () {
    $("#addShiftButton").click(function(){
        $.ajax({
            type: "POST",
            url: "calendar/addhours",
            data: {'name':$('#name').val(), 'start_time':$('input[name=start_time]').val(), 'finish_time':$('input[name=finish_time]').val(), 'add_shift_date':$('#add_shift_date').val(), 'breaks':$('input[name=breaks]').val(), 'shift_status':$('#shift_status').val()},
            success: function(data){
                var result = jQuery.parseJSON( data );  // you need to convert json into javascript array 
                if (result.status == "error")
                {
                    $("#error").show();
                }
                else
                {
                    $('#addShiftModal').modal('hide'); //hide popup  
                    //location.reload();
                }
            },
            error: function(){
                alert("Error");
            }
        });
    });
});

基本上你正在做的是尝试通过data.status访问 JSON 对象的成员,你必须在执行此操作之前将其转换为 JavaScript 对象,如上面的代码所示。

使用 JSON.parsejson objects转换为javascript objects

<script>
$(document).ready(function () {
    $("#addShiftButton").click(function(){
        $.ajax({
            type: "POST",
            url: "calendar/addhours",
            data: {'name':$('#name').val(), 'start_time':$('input[name=start_time]').val(), 'finish_time':$('input[name=finish_time]').val(), 'add_shift_date':$('#add_shift_date').val(), 'breaks':$('input[name=breaks]').val(), 'shift_status':$('#shift_status').val()},
            success: function(data){
            var res = JSON.parse(data);
                if (res.status == "error")
                {
                    $("#error").show();
                }
                else
                {
                    $('#addShiftModal').modal('hide'); //hide popup  
                    //location.reload();
                }
            },
            error: function(){
                alert("Error");
            }
        });
    });
});