1

从javascript向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) 对象调用不会。谁能告诉地区?

4

3 回答 3

1

你能试一下吗 var url="Ajax.FSu";

代替

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

于 2013-01-15T08:11:33.653 回答
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 进行编码,而不是对 localhost 部分进行硬编码。Spring MVC 有一个方便的标签:

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

将为您输出 URL 和

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

将在上下文变量中插入 URL 以在您的 jsp 文件中使用,如下所示:

<a href="${yourURL}">Link</a>
于 2013-01-15T09:23:31.987 回答
0

我没有看到methodNameResolverSpring 使用它来将 URL 路由到MultiActionController's,它可能是类似的东西,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?method=abcdefg

于 2013-01-15T09:05:14.140 回答