2013-01-15 94 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

相關問題