【发布时间】:2015-11-24 08:09:19
【问题描述】:
我有关于此错误的这些链接,但我的问题仍未解决。Here,Here,我检查了更多,但它们是基于 json 的。
首先,我告诉你,我的另一个项目中正在使用相同的代码,问题是我已经在 jsp 和 serlvets 中实现了该项目,而这个在 spring 和 hibernate 中实现。
问题是请求来自方法。当它返回时。控制台 400 错误请求中出现一条消息。
这是我的方法
@RequestMapping(value = "/populateBillItems")
public @ResponseBody List<String> populateItems(@RequestParam String catName) {
itemNames = productService.getItemNames(catName);
return itemNames;
}
Javascript
function populateItems(obj){
var itemCategory = obj.value;
$.get('populateBillItems', {
catName : itemCategory
}, function(response) {
var select = $('#itemName');
select.find('option').remove();
$.each(response, function(index, value) {
$('<option>').val(value).text(value).appendTo(select);
});
});
}
您可以看到从数据库中检索到的值,但是当返回响应时,控制台中出现此错误
GET http://localhost:8080/InventoryManagementSystemUsingSpring/populateBillItems?catName=Rice 406 (Not Acceptable)
这是第一个问题。
我在 jquery 中有另一个函数,它向控制器发送请求并获取 id 并将其填充到文本字段中。它也给出了与上面给出的相同的错误..
function populateBillId(obj){
var objValue=obj.value;
var table="";
if(objValue=='Borrower'){
table="BorrowerBill";
alert(table);
$("#customerName").prop("readonly", true);
}else if(objValue=='Customer'){
$("#customerName").prop("readonly",false);
table="CustomerBill";
}
$.get('populateBillId', {
tableName : table
}, function(response) {
var id=response;
$("#billId").val(id);
});
}
GET http://localhost:8080/InventoryManagementSystemUsingSpring/populateBillId?tableName=BorrowerBill
问题几乎解决了。现在我得到了我这样的响应方法的值
@RequestMapping(value = "/populateBillItems")
public @ResponseBody String populateItems(@RequestParam String catName) {
itemNames = productService.getItemNames(catName);
String json=null;
json = new Gson().toJson(itemNames);
return json;
}
像这样修改JQuery
function populateItems(obj){
var itemCategory = obj.value;
$.get('populateBillItems', {
catName : itemCategory
}, function(response) {
var select = $('#itemName');
select.find('option').remove();
$.each(JSON.parse(response, function(index, value){
$('<option>').val(value).text(value).appendTo(select);
}));
});
}
但现在的问题是我也在选项中得到(双引号)“”
这些是 itemNames SelectBox 和 Id Textfield 中的引用
【问题讨论】:
-
400 Bad Request 错误一般意味着服务器在请求中收到的属性导致了错误。我会检查您发送的内容以及服务器正在使用它做什么。您的 JS 代码不太可能是问题(除了缺少任何输入清理),我将从调试
productService.getItemNames调用开始。 -
请求正在发送到服务器,它甚至对其执行操作。但是在方法返回响应后,该消息来了。
-
您可以看到结果显示从数据库中检索到项目。所以我认为它没有错误。
-
您是否为路径定义了
Consume注释?看来您的服务需要特定的Content-Type标头 -
也添加你的 pom.xml 文件!