2012-09-27 62 views
3

我無法通過dojo 1.8的xhr調用發佈dojo表單,但它通過不推薦的方法dojo.xhrPost發生。請參閱我使用的代碼片段。dojo ajax使用xhr post和json調用

這是JSP的道場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> 

下面部分被彈簧控制器

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

在這裏我不是從形式到呼叫者模型屬性得到的值。但電話正在發生。 而不是這個ajax調用,如果我去了不贊成的調用a,值越來越受限。

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

對於1.8中的最新調用,而不是參數'data',我嘗試'form'仍然沒有發生。有什麼可以成爲這個問題?

回答

3

Dojo有deprecated the load and error callback attributes in favor of deferreds/promises


我以爲道場將向後兼容維持到2.0,但也許它已被刪除(啊..也許1.8支持舊的語法,如果你需要老dojo/_base/xhr)。

此外,請注意最好直接要求dojo/request而不是dojo/request/xhr

更新:爲什麼dojo/request優於dojo/request/xhr

dojo/requestdojo/request/xhr更高級別的抽象。所以它是:

  • 更便攜:dojo/request自動選擇合適的提供商,並在客戶端和服務器工作。 dojo/request/xhr將無法​​在服務器上運行(node.js),並且dojo/request/node在客戶端(瀏覽器)上不起作用。
  • 更靈活。在未來,也許會增加一個更好的提供者。 dojo/request可以使用最好的提供程序,而不需要對代碼進行任何更改。另外,可以根據URL配置提供者。對於跨域請求,示例用例將使用dojo/request/xhr來表示相同的域請求,使用dojo/request/script

來源:

+0

你可以給例如你的答案,請! –

+0

@SathishKumarkk:答案中有兩個例子的鏈接。 – Leftium

+0

雅,但是當我嘗試這個時,我的彈簧控制器不叫Y? –