Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么POST请求变成GET请求?_Java_Jquery_Ajax_Spring_Spring Mvc - Fatal编程技术网

Java 为什么POST请求变成GET请求?

Java 为什么POST请求变成GET请求?,java,jquery,ajax,spring,spring-mvc,Java,Jquery,Ajax,Spring,Spring Mvc,当我使用jQuery的$.ajax()或$.post()方法向服务器发送表单信息时,“数据”字符串被添加到url的末尾。为什么POST请求变成GET请求?表单代码如下所示 <form role="form" class="form-horizontal"> <div class="box-body"> <div class="form-group"> <label for="name" class="col

当我使用jQuery的
$.ajax()
$.post()
方法向服务器发送表单信息时,“数据”字符串被添加到url的末尾。为什么POST请求变成GET请求?表单代码如下所示

<form role="form" class="form-horizontal">
    <div class="box-body">
        <div class="form-group">
            <label for="name" class="col-sm-2 control-label">Name</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="name" name="name" required>
            </div>
        </div>
        <div class="form-group">
            <label for="hospital" class="col-sm-2 control-label">Hospital</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="hospital" name="hospital" required>
            </div>
        </div>
        <div class="form-group">
            <label for="url" class="col-sm-2 control-label">URL</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="url" name="url" required>
            </div>
        </div>
        <div class="form-group">
            <label for="version" class="col-sm-2 control-label">Version</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="version" name="version" required>
            </div>
        </div>
        <div class="form-group">
            <label for="description" class="col-sm-2 control-label">Description</label>
                <div class="col-sm-10">
                    <textarea class="form-control" id="description" name="description" rows="3" required></textarea>
                </div>
        </div>
    </div>
    <div class="box-footer text-center">
        <button type="reset" class="btn btn-default">Reset</button>
        <button type="submit" class="btn btn-primary" id="submitBtn">Submit</button>
    </div>
</form>
@RestController
@RequestMapping(value = "/nuts/add", produces = {APPLICATION_JSON_VALUE})
public class AddNutsApi {

    private MongoBasicDao<Nuts> mongoBasicDao;

    @Autowired
    public void setMongoBasicDao(MongoBasicDao<Nuts> mongoBasicDao) {
        this.mongoBasicDao = mongoBasicDao;
    }

    @RequestMapping(value = "", produces = {APPLICATION_JSON_VALUE}, method = RequestMethod.POST)
    public ResponseEntity<Void> addNutsPost(@RequestBody Nuts nuts) throws NotFoundException {
        if (nuts.getName() != null && nuts.getHospital() != null && nuts.getUrl() != null && nuts.getVersion() != null && nuts.getDescription() != null) {
            try {
                Nuts _nuts = new Nuts();
                _nuts.setName(new String(nuts.getName().getBytes("ISO-8859-1"), "UTF-8"));
                _nuts.setHospital(new String(nuts.getHospital().getBytes("ISO-8859-1"), "UTF-8"));
                _nuts.setUrl(new String(nuts.getUrl().getBytes("ISO-8859-1"), "UTF-8"));
                _nuts.setVersion(new String(nuts.getVersion().getBytes("ISO-8859-1"), "UTF-8"));
                _nuts.setDescription(new String(nuts.getDescription().getBytes("ISO-8859-1"), "UTF-8"));
                _nuts.setCreationTime(new Date());
                Integer mark = mongoBasicDao.getCollectionMark(Constant.COLLECTION_NUTS);
                _nuts.setMark(mark);
                mongoBasicDao.addObject(_nuts, Constant.COLLECTION_NUTS);
                return new ResponseEntity<>(HttpStatus.OK);
            } catch (Exception e) {
                return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
            }
        } else {
            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
        }

    }
}
url总是这样

http://localhost:8080/nuts/add.html?name=1&hospital=1&url=1&version=1&description=1
我的后端框架是SpringMVC,控制器代码如下所示

<form role="form" class="form-horizontal">
    <div class="box-body">
        <div class="form-group">
            <label for="name" class="col-sm-2 control-label">Name</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="name" name="name" required>
            </div>
        </div>
        <div class="form-group">
            <label for="hospital" class="col-sm-2 control-label">Hospital</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="hospital" name="hospital" required>
            </div>
        </div>
        <div class="form-group">
            <label for="url" class="col-sm-2 control-label">URL</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="url" name="url" required>
            </div>
        </div>
        <div class="form-group">
            <label for="version" class="col-sm-2 control-label">Version</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="version" name="version" required>
            </div>
        </div>
        <div class="form-group">
            <label for="description" class="col-sm-2 control-label">Description</label>
                <div class="col-sm-10">
                    <textarea class="form-control" id="description" name="description" rows="3" required></textarea>
                </div>
        </div>
    </div>
    <div class="box-footer text-center">
        <button type="reset" class="btn btn-default">Reset</button>
        <button type="submit" class="btn btn-primary" id="submitBtn">Submit</button>
    </div>
</form>
@RestController
@RequestMapping(value = "/nuts/add", produces = {APPLICATION_JSON_VALUE})
public class AddNutsApi {

    private MongoBasicDao<Nuts> mongoBasicDao;

    @Autowired
    public void setMongoBasicDao(MongoBasicDao<Nuts> mongoBasicDao) {
        this.mongoBasicDao = mongoBasicDao;
    }

    @RequestMapping(value = "", produces = {APPLICATION_JSON_VALUE}, method = RequestMethod.POST)
    public ResponseEntity<Void> addNutsPost(@RequestBody Nuts nuts) throws NotFoundException {
        if (nuts.getName() != null && nuts.getHospital() != null && nuts.getUrl() != null && nuts.getVersion() != null && nuts.getDescription() != null) {
            try {
                Nuts _nuts = new Nuts();
                _nuts.setName(new String(nuts.getName().getBytes("ISO-8859-1"), "UTF-8"));
                _nuts.setHospital(new String(nuts.getHospital().getBytes("ISO-8859-1"), "UTF-8"));
                _nuts.setUrl(new String(nuts.getUrl().getBytes("ISO-8859-1"), "UTF-8"));
                _nuts.setVersion(new String(nuts.getVersion().getBytes("ISO-8859-1"), "UTF-8"));
                _nuts.setDescription(new String(nuts.getDescription().getBytes("ISO-8859-1"), "UTF-8"));
                _nuts.setCreationTime(new Date());
                Integer mark = mongoBasicDao.getCollectionMark(Constant.COLLECTION_NUTS);
                _nuts.setMark(mark);
                mongoBasicDao.addObject(_nuts, Constant.COLLECTION_NUTS);
                return new ResponseEntity<>(HttpStatus.OK);
            } catch (Exception e) {
                return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
            }
        } else {
            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
        }

    }
}
@RestController
@RequestMapping(value=“/nuts/add”,products={APPLICATION\u JSON\u value})
公共类AddNutsApi{
私人蒙哥巴西道蒙哥巴西道;
@自动连线
公共无效设置MongoBasicDao(MongoBasicDao MongoBasicDao){
this.mongoBasicDao=mongoBasicDao;
}
@RequestMapping(value=”“,products={APPLICATION\u JSON\u value},method=RequestMethod.POST)
public ResponseEntity addNutsPost(@RequestBody Nuts)引发NotFoundException{
如果(nuts.getName()!=null和nuts.getHospital()!=null和nuts.getUrl()!=null和nuts.getVersion()!=null和nuts.getDescription()!=null){
试一试{
螺母_螺母=新螺母();
_nuts.setName(新字符串(nuts.getName().getBytes(“ISO-8859-1”),“UTF-8”);
_nuts.setHospital(新字符串(nuts.getHospital().getBytes(“ISO-8859-1”),“UTF-8”);
_nuts.setUrl(新字符串(nuts.getUrl().getBytes(“ISO-8859-1”),“UTF-8”);
_nuts.setVersion(新字符串(nuts.getVersion().getBytes(“ISO-8859-1”),“UTF-8”);
_nuts.setDescription(新字符串(nuts.getDescription().getBytes(“ISO-8859-1”),“UTF-8”);
_nuts.setCreationTime(新日期());
整数标记=mongoBasicDao.getCollectionMark(常量.COLLECTION_);
_螺母.设置标记(标记);
addObject(_nuts,Constant.COLLECTION_nuts);
返回新的响应状态(HttpStatus.OK);
}捕获(例外e){
返回新的响应属性(HttpStatus.BAD_请求);
}
}否则{
返回新的响应属性(HttpStatus.BAD_请求);
}
}
}
我添加了jackson的依赖项(jackson数据绑定),并在Spring MVC配置文件中设置了
。顺便说一下,DispatcherServlet的url模式是
/

谁能告诉我哪里弄错了?非常感谢

当您调用
JSON.stringify(info)
时,您将得到一个JSON字符串,例如:

{ "name": "1", "hospital": "1", "url": "1", "version": "1", "description": "1" }
?name=1&hospital=1&url=1&version=1&description=1
您肯定不会得到这样的查询字符串:

{ "name": "1", "hospital": "1", "url": "1", "version": "1", "description": "1" }
?name=1&hospital=1&url=1&version=1&description=1
这应该是您的提示,JavaScript代码不负责您看到的
GET
请求

问题是您将提交函数绑定错了
$(“#submitBtn”).submit(…)
不执行任何操作,因为
不会触发任何
submit
事件。
没有

发生的情况是JavaScript代码被忽略,单击
Submit
按钮将触发表单的提交,并且由于
元素没有
method=“post”
属性,表单将作为
GET
提交


解决方案:将
submit(…)
绑定到

尝试添加
method=RequestMethod。在
@RequestMapping
和html表单
method=“POST”
上发布
,错误是什么?检查“网络”选项卡上的请求/http方法是什么,并且您有@RequestBody,您是否正确地将其作为请求正文发送?。在网络选项卡上共享信息尝试删除
JSON.stringify
function@drgPP谢谢ajax已经指定了“post”方法,并且method=RequestMethod.post也由方法“addNutsPost”指定。谢谢您的解释。我已将sumbit(…)绑定到表单元素,但现在遇到415 http错误,该错误表示“不支持的媒体类型”:(因为您没有指定内容类型,这意味着它默认为
application/x-www-form-urlencoded;charset=UTF-8
,但实际上您发送的是
application/json
。请使用
$.ajax
而不是
$.post
,这样您就可以设置
contentType
)。