3

Dojo 1.8 の xhr 呼び出しを介して Dojo フォームを投稿することはできませんが、非推奨のメソッド dojo.xhrPost を介して行われています。私が使用したコードフラグメントをご覧ください。

これは、Dojo ajax 呼び出しの jsp の一部です。

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 呼び出しの代わりに、値がバインドされます。

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

引数 'data' の代わりに 1.8 での最新の呼び出しについては、'form' で試してみましたが、まだ発生していません。この問題は何ですか?

4

1 に答える 1

3

Dojo は、 deferreds/promises を優先して、およびcallback 属性を非推奨にしloaderrorました。


Dojo は 2.0 まで下位互換性を維持すると思っていましたが、おそらく削除されました (古いdojo/_base/xhr.

また、直接ではdojo/requestなくrequireの方が良いことに注意してください。dojo/request/xhr

更新: が優先される理由:dojo/requestdojo/request/xhr

dojo/requestよりも高いレベルの抽象化ですdojo/request/xhr。つまり、次のとおりです。

  • 移植性が高い:dojo/request適切なプロバイダーを自動的に選択し、クライアントとサーバーの両方で機能します。dojo/request/xhrサーバー (node.js)dojo/request/nodeでは機能せず、クライアント (ブラウザー) でも機能しません。
  • より柔軟に。将来的には、より優れたプロバイダーが追加される可能性があります。dojo/requestコードを変更することなく、最適なプロバイダーを使用できます。また、プロバイダーは URL に基づいて構成できます。ユース ケースの例としてはdojo/request/xhr、同じドメイン リクエストとdojo/request/scriptクロスドメイン リクエストに使用されます。

ソース:

于 2012-09-27T08:27:10.280 に答える