Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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 无法调用控制器方法,使用SpringMVC调用ajax_Java_Ajax_Spring_Spring Mvc - Fatal编程技术网

Java 无法调用控制器方法,使用SpringMVC调用ajax

Java 无法调用控制器方法,使用SpringMVC调用ajax,java,ajax,spring,spring-mvc,Java,Ajax,Spring,Spring Mvc,我有个问题 使用SpringMVC,我想使用ajax调用,尝试调用controller方法,但我做不到,有一个jsp页面和控制器类 我的Jsp页面 <form role="form" > <div class="form-group"> <label for="Ders">Ders</label> <for

我有个问题

使用SpringMVC,我想使用ajax调用,尝试调用controller方法,但我做不到,有一个jsp页面和控制器类

我的Jsp页面

            <form role="form" >

                <div class="form-group">
                    <label for="Ders">Ders</label>
                    <form:select path="derslist" class="form-control" id="ddlders">
                        <form:options items="${derslerlistesi}" itemValue="dersid"
                            itemLabel="ders" />
                    </form:select>
                </div>
                <div class="form-group">

                    <label for="KonuAd">Konu Ad</label> <input type="text"
                        class="form-control" id="KonuAd" placeholder="Konu İsmi Giriniz!">


                </div>
                <div class="form-group">
                    <button type="submit" id="btnekle" class="btn btn-default">Ekle</button>
                </div>

谢谢你的帮助

我认为您在脚本中有问题,您需要将数据作为查询参数传递,因为您在控制器类中使用了
@RequestParam
。因此,在ajax调用中,url应该如下所示

url: "/islemler/konukaydet?konu="+input.konu+"&dersid="+input.dersid;
注意-您没有在控制器中使用
islemler
URL
@RequestMapping(value=“/islemler/konukaydet”,method=RequestMethod.POST)

它可能会帮助你,如果没有请回答我


如果您想按原样使用脚本,那么您需要在控制器中进行更改,使用
@RequestBody
并使用模型添加到@Sam的点,根据您在js上的url,您需要在控制器级别添加@RequestMapping。因此,您的控制器应该如下所示:

@RequestMapping(value = "/islemler")
    @Controller public class IslemlerController {

因此,通过将控制器级别的请求映射和KonuKaydet方法级别的请求映射结合起来,您现在就可以完成所需的请求映射

我假设您已经在dispatcher servlet.xml中配置了控制器

如果不是

如果您在本地计算机上运行它,那么您需要调用

$.ajax({
//其他选择。
网址:http://localhost:/
//其他选择。
});


此外,
@RequestMapping
应在控制器级别提供。

在@RequestMapping中,您应在控制器方法上映射完整URL,或在控制器级别添加@RequestMapping,如:

@Controller
@RequestMapping("/islemler/") 
public class IslemlerController  {

    @Autowired
    private Dao dao;

    @Autowired
    private Konular _konu;

    @RequestMapping(value = "home", method = RequestMethod.GET)
    public String Home(Model model,Dersler dersler)  { 

     model.addAttribute("derslist",dersler);
     return "islemler"; 

    } 


    @ModelAttribute("derslerlistesi")
    public List<Dersler> getdersler ()
    {
        return dao.getAll(Dersler.class);
    }

    @ModelAttribute("konulistesi")
    public List<Konular> getKonular ()
    {
        return dao.getAll(Konular.class);
    }

    @ResponseBody
    @RequestMapping(value="konukaydet",method=RequestMethod.POST)
    private  Konular KonuKaydet (@RequestParam String konu,@RequestParam int dersid)
    {
        _konu.setKonu(konu);
        _konu.setDersid(dersid);
        _konu.setSinavid(1);
        _konu =  dao.save(_konu);
            System.out.println("kaydet e girdi !");
        return _konu;
    }

}
对于Home方法,您的URL类似于“./islemler/Home”

我希望它能帮助你。

解决这个问题

脚本代码

    function madeAjaxCall(){
    var data =  {}
    data["konu"] = $("#konuad").val()
    data["dersid"] = $("#ddlders").val()

 $.ajax({
  type: "post",
//  http://localhost:8080
  url: "/islemler/konukaydet",
  cache: false,    
//  data:'konu=' + $("#konuad").val() + "&dersid;=" + $("#ddlders").val(),
  data:data,
  success: function(response){
   $('#result').html("");
   var obj = JSON.parse(response);
   $('#result').html("First Name:- " + obj.konu +"</br>Last Name:- " + obj.dersid  );
  },
  error: function(){      
   alert('Error while request..');
  }
 });
}

非常感谢……:)

你能检查一下你在浏览器上调用的响应并检查它返回的响应代码吗?好的,然后通过接受或投票来结束这个问题。事实上,我遇到了一个新问题:ajax调用成功没有触发下面的代码,它工作它调用方法并做一些工作,但不启动成功的ajax调用你有什么想法吗?我解决了这个问题,是的,我没有看到这个教程,我在这个url上使用了脚本代码。当我在我的控制器方法上使用“@RequestMapping(value=“islemler/konukaydet”,method=RequestMethod.POST)”注释时,我的控制器出现了问题。它可以工作,不需要本地主机:,非常感谢ASquarei先生,我认为dispatherservlet找不到我的控制器方法url
@Controller
@RequestMapping("/islemler/") 
public class IslemlerController  {

    @Autowired
    private Dao dao;

    @Autowired
    private Konular _konu;

    @RequestMapping(value = "home", method = RequestMethod.GET)
    public String Home(Model model,Dersler dersler)  { 

     model.addAttribute("derslist",dersler);
     return "islemler"; 

    } 


    @ModelAttribute("derslerlistesi")
    public List<Dersler> getdersler ()
    {
        return dao.getAll(Dersler.class);
    }

    @ModelAttribute("konulistesi")
    public List<Konular> getKonular ()
    {
        return dao.getAll(Konular.class);
    }

    @ResponseBody
    @RequestMapping(value="konukaydet",method=RequestMethod.POST)
    private  Konular KonuKaydet (@RequestParam String konu,@RequestParam int dersid)
    {
        _konu.setKonu(konu);
        _konu.setDersid(dersid);
        _konu.setSinavid(1);
        _konu =  dao.save(_konu);
            System.out.println("kaydet e girdi !");
        return _konu;
    }

}
$(document).ready(function() {
  $("#btnekle").click(function() {
    var input = {
      "konu": $("#KonuAd").val(),
      "dersid": $("#ddlders").val()
    };
    var inputStr = JSON.stringify(input);
    alert(inputStr);
    $.ajax({
      url: "../islemler/konukaydet",
      type: "POST",
      data: inputStr,
      dataType: "json",
      success: function(output) { // callback method for further manipulations
        var str = JSON.stringify(output);
        alert("success ");
        $("#output").text(data);
      },
      error: function(data) { // if error occured
          alert("err");
        $("#error").text(data);
      }
    });

  });
});
    function madeAjaxCall(){
    var data =  {}
    data["konu"] = $("#konuad").val()
    data["dersid"] = $("#ddlders").val()

 $.ajax({
  type: "post",
//  http://localhost:8080
  url: "/islemler/konukaydet",
  cache: false,    
//  data:'konu=' + $("#konuad").val() + "&dersid;=" + $("#ddlders").val(),
  data:data,
  success: function(response){
   $('#result').html("");
   var obj = JSON.parse(response);
   $('#result').html("First Name:- " + obj.konu +"</br>Last Name:- " + obj.dersid  );
  },
  error: function(){      
   alert('Error while request..');
  }
 });
}
@RequestMapping(value="islemler/konukaydet",method=RequestMethod.POST)
private   @ResponseBody  Konular KonuKaydet (HttpServletRequest request, HttpServletResponse response) 
{
    _konu.setKonu(request.getParameter("konu"));
    _konu.setDersid(Integer.parseInt(request.getParameter("dersid")));
    _konu.setSinavid(1);
    _konu =  dao.save(_konu);
        System.out.println("kaydet e girdi !");

    return _konu;
}