我想在表单提交中使用ajax ..我收到错误405 - 请求方法' POST'不支持

时间:2017-06-24 06:48:05

标签: javascript jquery ajax jsp spring-mvc

请让我知道我需要在以下代码中进行哪些更改。 这里我将数据插入数据库,也让我知道合适的JQuery脚本。 没有下面的.jsp中的ajax部分,它工作正常。但是当我在jsp中添加jquery ajax部分时,它不起作用



here is my controller
@Controller
public class EmployeeController {

  @Autowired
  EmpDao dao;

  @RequestMapping(value = "/index", method = RequestMethod.GET)
  public ModelAndView index() {
    return new ModelAndView("index", "command", new Employee());
  }
  @RequestMapping(value = "/addEmployee", method = RequestMethod.POST)
  public String addEmployee(@ModelAttribute("SpringWeb") Employee e, ModelMap model) {
    dao.saveEmployee(e);
    model.addAttribute("message", "Successfully Inserted....");
    return "index";
  }
}

here is my form format

<form>
  <table>
    <tr>
      <td>Roll:</td>
      <td><input type="text" name="roll" id="roll"></td>
    </tr>
    <tr>
      <td>Name:</td>
      <td><input type="text" name="name" id="name"></td>
    </tr>
    <tr>
      <td>Address:</td>
      <td><input type="text" name="address" id="address"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" value="submit" onclick="return doAjaxPost()"></td>
    </tr>
    <tr>
      <td colspan="2">
        <div id="info" style="color: green;"></div>
      </td>
    </tr>
  </table>

</form>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

好吧,我发现您的JavaScript代码没有任何问题(除了您已经编写JQuery.ajax而不是jQuery.ajax

错误代码405表明服务器不支持指定URL的请求方法(在您的情况下为POST)。但正如我在这一行所看到的那样:

@RequestMapping(value = "/addEmployee", method = RequestMethod.POST)

您已经为POST支持/addEmployee。您已经通过检查浏览器的开发人员工具验证了请求网址是否正确生成。

因此,可能存在以下一种情况导致您的请求失败:

  1. 浏览器以某种方式缓存此请求的响应。尝试在AJAX配置中设置cache: false
  2. AJAX没有被完全解雇,表单实际上已经提交了。为防止这种情况,您可以尝试以下操作:
  3. 更改脚本

    $(function() {
      $("form").submit(function (e) {
        e.preventDefault();
    
        var roll = document.getElementById("roll").value;
        var name = document.getElementById("name").value;
        var address = document.getElementById("address").value;
        var dataString = 'roll=' + roll + '&name=' + name + '&address=' + address;
    
        jQuery.ajax({
          type: "POST",
          url: "${pageContext.request.contextPath}/addEmployee",
          data: dataString,
          success: function(data) {
            $("#info").html(data);
          },
          error: function() {}
          });
      });
    });
    

    从HTML中删除onclick处理程序

    <input type="submit" value="submit">
    

    这将动态绑定submit事件处理程序,并阻止表单提交到URL。