我的页面上有一个模态,它通过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"}
。
但是我的else
语句的if
部分正在执行。谁能明白为什么?
答案 0 :(得分:3)
<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对象,如上面的代码所示。
答案 1 :(得分:0)
使用JSON.parse
将json 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");
}
});
});
});