2012-04-20 14 views
5

के साथ JQuery/Ajax के साथ JSON अनुरोध JSON/Spring MVC के लिए मैं बहुत नया हूं और एक स्प्रिंग एमवीसी नियंत्रक को AJAX कॉल का एक सरल उदाहरण प्राप्त करने का प्रयास कर रहा हूं - लेकिन मैं 400 - खराब अनुरोध की एक त्रुटि लौट रहा हूं ।वसंत

इंटरनेट को खराब करने के बाद, मैंने पाया है कि यह आमतौर पर उचित सामग्री प्रकार को सेट न करने के कारण होता है - लेकिन [मुझे विश्वास है] मैंने ऐसा किया है।

//validate the object 
    var urlString = "/ajax/add/"; 

    $.ajax({ 
     type:"POST", 
     url: urlString, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     data: {value1: 'apples', value2 : 'oranges'}, 
     success: function(result){ 
      alert("success"); 
     }, 
     error: function(jqXHR, textStatus, errorThrown){ 
      alert("error:" + textStatus + " exception:" + errorThrown); 
     } 

    }) ; 

और मेरे नियंत्रक:

@Controller 
itpublic class AddController { 

private static Logger m_log = null; 

@RequestMapping(value = "/ajax/add") 
public String handle(@RequestBody String json){ 

    DummyClass dummyRequest; 
    try { 

     ObjectMapper mapper = new ObjectMapper(); 
     dummyRequest = mapper.readValue(json, DummyClass.class); 
     m_log.info("Value1: " + dummyRequest.getValue1()); 
     m_log.info("Value2: " + dummyRequest.getValue2()); 
    } catch (Exception e) { 

    } 
    finally{ 


    } 
    return "called"; 
} 

किसी को भी मेरी मदद कर सकते हैं बाहर

यहाँ मेरी AJAX कॉल है?

संपादित

यहाँ मेरी संदर्भ है कि मैं कॉन्फ़िगर करने के लिए इस्तेमाल करते हैं स्प्रिंग:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<context:component-scan base-package="com.project.do" /> 

<!--<mvc:annotation-driven/> --> 

<bean class="com.project.do.interceptors.handler.mapping.HandlerInterceptorAnnotationAwareHandlerMapping "/> 

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 

<bean class="com.project.do.viewresolver.ProjectViewResolver" > 
    <property name="tilesResolver" ref="tilesResolver" /> 
    <property name="jspResolver" ref="jspResolver" /> 
</bean> 

<bean id="tilesResolver" class ="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" /> 
    <property name="order" value="2" /> 
</bean> 

<bean id="jspResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/jsp/" /> 
    <property name="suffix" value=".jsp" /> 
    <property name="order" value="3" /> 
</bean> 

<bean id ="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions" value="/WEB-INF/tiles/tiles.xml" /> 
    <property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles2.SpringBeanPreparerFactory"/> 
</bean> 

<mvc:resources mapping="/css/**" location="/css/" /> 
<mvc:resources mapping="/js/**" location="/js/" /> 
<mvc:resources mapping="/images/**" location="/images/" /> 
<mvc:resources mapping="/javascript/**" location="/javascript/" /> 
<mvc:resources mapping="/scripts/**" location="/scripts/" /> 
<mvc:resources mapping="/styles/**" location="/styles/" /> 
<mvc:resources mapping="/help/**" location="/help/" /> 

<!-- <mvc:view-controller path="/" view-name="welcome"/> --> 

मैं नोट करना चाहिए कि मैं पैकेज com.project में अजाक्स के साथ एक काम नियंत्रक है .do.working, लेकिन अजाक्स और जेएसओएन के साथ गैर-कंट्रोलर नियंत्रक एक ही पैकेज में com.project.do.not.working

+0

आप कैसे कॉन्फ़िगर कर रहे हैं वसंत नीचे के रूप में बदल रहा है? क्या आप प्रश्न संपादित कर सकते हैं और अपना कॉन्फ़िगरेशन विवरण जोड़ सकते हैं (शायद एक एक्सएमएल फ़ाइल जब तक कि आप नई @ कॉन्फ़िगरेशन शैली का उपयोग नहीं कर रहे हों)। – andyb

+0

मैंने वसंत को कॉन्फ़िगर करने के लिए उपयोग किए गए संदर्भ को संलग्न किया। धन्यवाद! – kjl

+1

क्या आप अपने अनुरोधबॉडी को @RequestParam स्ट्रिंग मान 1 के साथ बदल सकते हैं, .. (at) RequestParam स्ट्रिंग मान 2? और आप अपने ReequestMapping (जैसा कि raddykrish द्वारा उल्लिखित) के अंदर विधि = RequestMethod.POST रखना चाहते हैं। – Stealth

उत्तर

1

मुझे लगता है कि आपके अनुरोध मैपिंग में POST के रूप में RequestMethod नहीं है। मुझे लगता है कि डिफ़ॉल्ट रूप से यह एक अनुरोध प्राप्त कर रहा है लेकिन आपका AJAX एक POST अनुरोध है। कोशिश

@RequestMapping(value = "/ajax/add", method = RequestMethod.POST) 
public String handle(@RequestBody String json){ 
} 
+0

मैं इसे उत्तर के रूप में चुन रहा हूं, जैसा कि यह आवश्यक प्रतीत होता था। मैं वास्तव में यह मूल रूप से कोडित किया था, लेकिन जब चीजें काम नहीं कर रही थी तो खंडों को अलग करना शुरू कर दिया। समस्या का बड़ा हिस्सा प्रकृति में पूरी तरह से पर्यावरण प्रतीत होता है - कुछ भी मुझे इससे मदद नहीं कर सकता था। – kjl

+0

धन्यवाद @kjl .... – raddykrish

+0

@kjl, मुझे एक समान [समस्या] का सामना करना पड़ रहा है (http://stackoverflow.com/questions/13075101/400-bad-request-on-spring-jquery-ajax-post) , क्या आप कृपया मुझे बता सकते हैं कि असली मुद्दा क्या था? यह मेरी मदद कर सकता है –

0
@Controller 
@RequestMapping("/employee/add.htm") 
public class EmployeeController { 
    @RequestMapping(method = RequestMethod.POST) 
    public @ResponseBody 
    Employee add(HttpServletRequest request, HttpServletResponse response) 
      throws Exception { 


    } 
}