【问题标题】:500 Internal Server Error when calling ajax调用 ajax 时出现 500 内部服务器错误
【发布时间】:2015-07-10 09:44:46
【问题描述】:

我正在使用 spring mvc 和 apachitile.page redirecs 通过“AddUpdateCustomer”操作。我想在使用 ajax 重定向到页面(加载时)时将一个列表从控制器传递到视图。我写了一个代码但出错了。不知道我的 url 引用是否正确。收到错误警报。

控制器:

@RequestMapping("/AddUpdateCustomer")
public String redirectCustomer(Map<String, Object> map) {
    //map.put("customerList", customerService.listCustomer());
    return "AddUpdateCustomer";
}

@RequestMapping("/ListCustomer")    
@ResponseBody
public List<Customer> ListCustomer() {
    return customerService.listCustomer();
}
function LoadDataToThegrid() {
    $.ajax({
        type: "POST",
        url: "ListCustomer.html",
        data: {}, 
        success: function(data){
            alert(data);
        },
        error: function(jqXHR, textStatus, errorThrown){
            //alert('Error: ' +xhr.responseText);
            alert('Error: ' + jqXHR.responseText);
        }
    });
}

网页 xml:

<display-name>Spring3-Hibernate</display-name>
    <welcome-file-list>
        <welcome-file>redirect.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

spring-servlet.xml:

<context:annotation-config />
    <context:component-scan base-package="net.opticare" />


    <bean id="viewResolver" 
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">  
        <property name="viewClass">  
            <value>  
                org.springframework.web.servlet.view.tiles2.TilesView  
            </value>  
        </property>  
    </bean>  
    <bean id="tilesConfigurer" 
        class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">  
        <property name="definitions">  
            <list>  
                <value>/WEB-INF/tiles.xml</value>  
            </list>  
        </property>  
    </bean>  

    <bean id="messageSource" 
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages" />
        <property name="defaultEncoding" value="UTF-8" />
    </bean>

    <bean id="propertyConfigurer"             
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:location="/WEB-INF/jdbc.properties" />

    <bean id="dataSource" 
        class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" 
        p:driverClassName="${jdbc.driverClassName}"
        p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"
        p:password="${jdbc.password}" />


    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>

        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${jdbc.dialect}</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>
    <mvc:resources mapping="/resources/**" location="/resources/"  />
    <mvc:annotation-driven />
    <tx:annotation-driven />

    <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

萤火虫控制台错误:

500 内部服务器错误 -http://localhost/Spring3HibernateMaven/ListCustomer.html

【问题讨论】:

  • 500 错误表明问题出在您的服务器端代码上。
  • 你有一个/ListCustomer 的路由,但是你用你的ajax 访问ListCustomer.html,你在哪里添加.html??
  • 我删除了 .html 但还是一样
  • 双重检查您的萤火虫控制台?没有缓存问题等?在您的服务器控制台中看到输出了吗?
  • no 没有兑现错误,服务器控制台也没有错误。

标签: jquery ajax spring-mvc apache-tiles


【解决方案1】:

第一次快速浏览告诉我您应该删除 jquery ajax 调用的 url-property 中的 .html 部分。 与.html

@RequestMapping("/ListCustomer")    
@ResponseBody
public List<Customer> ListCustomer() {

控制器方法永远不会被调用。

【讨论】:

  • 删除html部分时,方法正在调用。但是ajax回调有错误警报。