我正在使用Ajax发布来调用控制器,但是我没有得到响应并得到错误。
我看到控制器在ajax正确获取的用户名上也为空
Ajax击中控制器,并且在系统输出中,输入值(用户名)显示为null,因此未获得预期值
我的Spring Controller
@Controller
public class SearchController {
UserService userService;
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
@PostMapping("/api/search")
public String getSearchResultViaAjax(String username) {
System.out.println(username);
String result=userService.findByNativeByName(username);
return result;
}
}
提交帖子的我的Ajax
function fire_ajax_submit() {
var name = $("#username").val();
$("#btn-search").prop("disabled", true);
$.ajax({
type: "POST",
contentType: "text/plain",
url: "/api/search",
data: name,
dataType: 'text',
cache: false,
timeout: 600000,
success: function (data) {
var json = "<h4>Ajax Response</h4><pre>"
data + "</pre>";
$('#feedback').html(json);
console.log("SUCCESS : ", data);
$("#btn-search").prop("disabled", false);
}
error: function (e) {
var json = "<h4>Ajax Response</h4><pre>"
+ e.responseText + "</pre>";
$('#feedback').html(json);
console.log("ERROR : ", e);
$("#btn-search").prop("disabled", false);
}
});
}
我的html
<form class="form-horizontal" id="search-form">
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label">Username</label>
<div class="col-sm-10">
<fieldset>
<p>
<select id = "username" class="form-control">
<option value = "Kilu">Kilu</option>
<option value = "Maha">Maha</option>
</select>
</p>
</fieldset>
</div>
</div>
</form>
任何帮助将不胜感激
答案 0 :(得分:0)
尝试像下面这样传递数据:
data: { "username": name },
答案 1 :(得分:0)
Sandeep Rathore 的答案几乎是正确的,除了参数名称必须为username
。
因此,在ajax代码中,将data
更改为以下内容:
data: { "username": name }
或使用@RequestParam()
重设控制器方法中的参数:
public String getSearchResultViaAjax(@RequestParam("name")String username)
更新的答案
响应是JSON
格式的数据,您可以使用下面的代码来获取它
success: function (data) {
data = eval("(" + data + ")");
console.log(data.username);
}
答案 2 :(得分:0)
您需要在成功阻止之后放置一个“ ,”(逗号),否则您将继续遇到相同的错误您在控制台上的页面:-
success: function (data) {
//your code
}, // right here to indicate the end of this block here as you're putting your error block after this.
答案 3 :(得分:0)
尝试更改contentType,
contentType: 'application/json; charset=utf-8;'
还要在成功块后加上','(逗号)。
答案 4 :(得分:0)
1)您的Spring Controller应该是@RestController或@Controller,其方法标注为@ResponseBody。
2)发布像这样的数据==>数据:{“ username”:name},
3)接收到数据后,使用stringify()进行显示,并使用JSON.parse()提取值。
4)检查您的内容类型标头参数(contentType:'application / json; charset = utf-8;')