Javascript 忽略我的if语句的ajax调用

Javascript 忽略我的if语句的ajax调用,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我的页面上有一个模式,它通过ajax将一些数据提交给我的Laravel应用程序,然后对其进行验证以确保字段存在 如果该字段不存在,则Laravel将返回一个json响应,并显示错误状态 然后,我在ajax调用的成功部分检查状态,如果是这种情况,则显示一条错误消息 然而,即使我返回了一个错误状态,我的if语句似乎丢失了它并继续执行该语句 以下是整个脚本: <script> $(document).ready(function () { $("#addShiftB

我的页面上有一个模式,它通过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>

$(文档).ready(函数(){
$(“#添加移位按钮”)。单击(函数(){
$.ajax({
类型:“POST”,
url:“日历/添加小时数”,
数据:{
“name”:$(“#name”).val(),
'开始时间':$('input[name=start\u 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()
},
成功:功能(数据){
如果(data.status==“错误”)
{
$(“#错误”).show();
}
其他的
{
$('#addShiftModal').modal('hide');//隐藏弹出窗口
//location.reload();
}
},
错误:函数(){
警报(“错误”);
}
});
});
});
我已经检查了调用,它正在成功进行,并且收到了一个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");
            }
        });
    });
});
$(文档).ready(函数(){ $(“#添加移位按钮”)。单击(函数(){ $.ajax({ 类型:“POST”, url:“日历/添加小时数”, 数据:{'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#shift#status').val(), 成功:功能(数据){ var result=jQuery.parseJSON(数据);//您需要将json转换为javascript数组 如果(result.status==“error”) { $(“#错误”).show(); } 其他的 { $('#addShiftModal').modal('hide');//隐藏弹出窗口 //location.reload(); } }, 错误:函数(){ 警报(“错误”); } }); }); });


基本上,您所做的是尝试通过
数据访问json对象的成员。状态
,您必须先将其转换为javascript对象,然后再执行上述代码所示操作。

使用
json.parse
json对象
转换为
javascript对象

<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");
            }
        });
    });
});

$(文档).ready(函数(){
$(“#添加移位按钮”)。单击(函数(){
$.ajax({
类型:“POST”,
url:“日历/添加小时数”,
数据:{'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#shift#status').val(),
成功:功能(数据){
var res=JSON.parse(数据);
if(res.status==“error”)
{
$(“#错误”).show();
}
其他的
{
$('#addShiftModal').modal('hide');//隐藏弹出窗口
//location.reload();
}
},
错误:函数(){
警报(“错误”);
}
});
});
});

响应不是JSON,而是字符串。在
$配置中使用
dataType:'json'
。ajax
配置或手动将其解析为json。对于这一点,除非指定,否则响应始终是字符串。在使用json数据之前,您需要先解析它。使用JSON.parse(数据)。在$.ajax或var obj=jQuery.parseJSON(数据)中使用数据类型:“JSON”;