2013-01-15 131 views
1

从JavaScript制作请求春天控制器方法如下从javascript(ajax)调用Spring控制器方法不触发?

<script language="javascript" type="text/javascript"> 
      var xmlHttp 
      var xmlHttp 
      function show() 
      { 
       if(typeof XMLHttpRequest != "undefined") 
       { 
       xmlHttp= new XMLHttpRequest(); 
       } 
       else if (window.ActiveXObject) 
       { 
        xmlHttp= new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
       if(xmlHttp==null) 
       { 
        alert("Browser does not support XMLHTTP Request") 
        return; 
       } 
       var FAC_LICENSE_NO=document.getElementById("FAC_LICENSE_NO").value; 
       //var url="/Final/WEB-INF/jsp/SurrenderViews/Ajax.jsp"; 
       var url="http://localhost:8080/Final/Ajax.FSu"; 
       url +="?param1="+FAC_LICENSE_NO; 
       alert(url); 
       xmlHttp.onreadystatechange = stateChange; 
       xmlHttp.open("GET", url, true); 
       xmlHttp.send(null);   
      } 
      function stateChange() 
      { 
       if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") 
       { 
        document.getElementById("factoryname").innerHTML=xmlHttp.responseText 
       } 
     } 
    </script> 

和我的控制器

public class PhaseTwoFormSurrenderOfLicense extends MultiActionController implements Connections { 

    public ModelAndView DataInput(HttpServletRequest request,HttpServletResponse response) 
    { 
     return new ModelAndView("SurrenderViews/DataInput"); 
    } 
    public String Ajax(HttpServletRequest request,HttpServletResponse response) 
    { 
      System.out.println("Maritammanafvara"); 
      String returning="<input type=\"text\" style=\"border: none\" name=\"Factory_name\" readonly=\"readonly\" value=\"HIHI\">"; 
      return returning; 

    } 
} 

,并在上面的代码中,我能够调用从HTML锚标记两者的DataInput和Ajax方法,但从XMLHttpRequest(ajax)对象调用不会。 任何人都可以告诉该地区?

回答

1

可以尝试 var url="Ajax.FSu";

,而不是

var url="http://localhost:8080/Final/Ajax.FSu";

+0

我试过这个先生。 – MyStack

+0

你可以使用像萤火虫浏览器工具,看看有没有要求 – Subin

0

我没有看到你的methodNameResolver,这Spring使用路由URL来MultiActionController的,它可能是这样创造PropertiesMethodNameResolver或一个由你自己。这是我的调度员:

<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> 
    <property name="paramName" value="method" /> 
</bean> 


<bean class="your.controller"> 
    <property name="methodNameResolver" ref="methodNameResolver" /> 
</bean> 


public class YourController extends MultiActionController 

    public ModelAndView abcdef(...){ 

    } 
} 

这将映射到 URL方法= ABCDEFG

0

你有没有想过使用库使用AJAX的? jQuery有这个方便的方法:api.jquery.com/category/ajax/

例子:

$.ajax("http://localhost:8080/Final/Ajax.FSu").done(function (data) { 
    // do stuff with data 
}).fail(function() { 
    // do stuff when failed 
}); 

而且你需要编码适当的URL,而不是硬编码的本地主机部分存在。 Spring MVC中有这样一个方便的标签:

<spring:url value="Final/Ajax.FSu" /> 

将输出的URL,你和

<spring:url value="Final/Ajax.FSu" var="yourURL" /> 

将插入上下文变量的URL在你的JSP文件中使用这样的:

<a href="${yourURL}">Link</a> 
+0

这就是答案不相关我的问题先生。 – MyStack

+0

我刚刚看到了这段代码的手写XmlHttpRequest代码,并立即认为你可能想用库来处理所有的怪癖 - 我认为这可能会解决你的问题。如果这是一个不必要的建议,那么我会纠正 - 对不起。 – theadam

相关问题