错误状态:'错误请求'。错误代码:400

时间:2013-04-16 11:39:40

标签: jquery json jsp spring-mvc

On ItemController:

@RequestMapping(value="/delete.htm", produces="application/json", method=RequestMethod.POST)
public @ResponseBody Item deleteItem(
            @RequestParam String itemName) {

    Item existingItem = new Item();
    existingItem.setItemName(itemName);
    itemService.deleteItem(existingItem);
    return existingItem;
}

On ItemDao Impl:

@Override
public void deleteItem(Item item) {
    // TODO Auto-generated method stub
    sessionFactory.getCurrentSession().delete(item);
}
项目ServiceImpl上的

@Transactional
public void deleteItem(Item item) {
    // TODO Auto-generated method stub
    itemDao.deleteItem(item);
}

在Jquery Grid上我使用删除功能:

function deleteRow(obj, args) { 
    // Get the currently selected row 
    var row = $('#grid').jqGrid('getGridParam','selrow');

    // A pop-up dialog will appear to confirm the selected action
    if (row != null) { 
        $('#grid').jqGrid('delGridRow', row, {
            url: 'delete.htm',
            recreateForm: true,
            beforeShowForm: function (form) {
                //Change title
                $(".delmsg").replaceWith('<span style="white-space: pre;">' +
                                     'Delete selected record?' + '</span>');
                //hide arrows
                $('#pData').hide();
                $('#nData').hide();
            },
            reloadAfterSubmit: true,
            closeAfterDelete: true,
            serializeDelData: function (postdata) {
                var rowdata = $('#grid').getRowData(postdata.id);
                // append postdata with any information 
                return {
                    id: postdata.id,
                    oper: postdata.oper,
                    username: rowdata.username
                };
            },
            afterSubmit: function (response, postdata) {
                var result = eval('(' + response.responseText + ')');
                var errors = "";

                if (result.success == false) {
                    for (var i = 0; i < result.message.length; i++) {
                        errors += result.message[i] + "<br/>";
                    }
                } else {
                    $('#msgbox').text('Entry has been deleted successfully');
                    $('#msgbox').dialog({
                        title: 'Success',
                        modal: true,
                        buttons: {
                            "Ok": function () {
                                $(this).dialog("close");
                            }
                        }
                    });
                }
                // only used for adding new records
                var newId = null;

                return [result.success, errors, newId];
            }
        });
    } else {
        $('#msgbox').text('You must select a record first!');
        $('#msgbox').dialog({
            title: 'Error',
            modal: true,
            buttons: {
                "Ok": function () {
                    $(this).dialog("close");
                }
            }
        });
    }
}

我收到以下错误:错误状态:'错误请求'。错误代码:400  删除所选记录? 我在控制器或jq网格中出错?请建议

2 个答案:

答案 0 :(得分:0)

That means你没有正确地将你的控制器映射到ajax jquery调用(?)。

我不熟悉jqGrid,但检查您是否正在执行帖子,并且请求参数已正确定义

(你使用的逻辑和命名惯例是令人困惑的btw。)

答案 1 :(得分:-1)

HTTP-Response Code 400声明您的请求有问题。只需检查对您的Web服务的调用是否正确(路径,参数等)。

此外,您可以查看服务器日志文件,以获得客户端错误的解释。 Spring-mvc将响应代码400映射到许多异常(看看here)。通过分析异常,您可以了解您的请求有什么问题。