2012-09-27 3 views
3

dojo 1.8의 xhr 호출을 통해 dojo 양식을 게시 할 수는 없지만 사용되지 않는 메소드 dojo.xhrPost를 통해 발생합니다. 내가 사용한 코드 조각을 보아라.xhr post 및 json을 사용하여 dojo ajax 호출

이 도장 아약스 호출 아래

require(["dojo/request/xhr"],function(xhr){ 
    xhr('http://localhost:8080/myApp/call',{ 
     data: 'callerName', 
     method:"POST", 
     load: function(data, ioargs) { 
      alert("The message is: " + ioargs.xhr.status); 
      }, 
      error: function(error){ 
      alert("Returned: " + error); 
      } 
    }); 
    }); 
<form data-dojo-type="dijit/form/Form" name="callerName" id="callerName"> 
    ...here are dojo input types 
</form> 

을위한 JSP의 부분은 스프링 여기서 컨트롤러

@RequestMapping(value="/call",method=RequestMethod.POST) 
public ModelAndView saveData3(HttpServletRequest req, @ModelAttribute Caller caller){} 

내가 발신자 모델 속성과 양식에서 값을 받고 있지 않다이다. 그러나 전화가 일어나고 있습니다. 아래의 deprecated call a를 호출하면이 Ajax 호출 대신 값이 바인딩됩니다.

dojo.xhrPost({ 
    url: 'http://localhost:8080/myApp/call', 
    form: 'callerName', 
    load: function(response) { 
    } 

'data'인수 대신 최신 호출 1.8에 대해 'form'을 시도했지만 여전히 발생하지 않았습니다. 이 문제는 무엇이 될 수 있습니까?

답변

3

도장은 deprecated the load and error callback attributes in favor of deferreds/promises입니다.


나는 미꾸라지 2.0까지 이전 버전과의 호환성 유지 것이라고 생각하지만, 아마도 그것은 (당신이 이전 dojo/_base/xhr 필요한 경우 아마도 1.8 이전 구문을 지원합니다 .. 아) 떨어졌다.

dojo/request/xhr 대신 dojo/request을 직접 입력하는 것이 좋습니다.

갱신 :dojo/requestdojo/request/xhr보다 선호되는 이유 :

dojo/requestdojo/request/xhr보다 더 높은 레벨의 추상화 (abstraction)이다. 따라서 :

  • 더 많은 휴대용 : dojo/request은 자동으로 적절한 공급자를 선택하고 클라이언트와 서버에서 작동합니다. dojo/request/xhr은 서버 (node.js)에서 작동하지 않으며 dojo/request/node은 클라이언트 (브라우저)에서 작동하지 않습니다.
  • 더 유연합니다. 앞으로는 더 나은 공급자가 추가 될 것입니다. dojo/request은 코드를 변경하지 않고도 최고의 공급자를 사용할 수 있습니다. 또한 URL을 기반으로 공급자를 구성 할 수 있습니다. 사용 사례의 예로는 동일한 도메인 요청에 dojo/request/xhr을 사용하고 상호 도메인 요청에는 을 사용합니다.

소스 :

+0

당신이 당신의 대답하시기 바랍니다에 대한 예를 제공 할 수 있습니다! –

+0

@SathishKumarkk : 답변에 두 가지 예에 대한 링크가 있습니다. – Leftium

+0

나중에 이걸 시도 할 때 내 스프링 컨트롤러가 Y라고하지 않습니까? –