web-dev-qa-db-ja.com

Extjs 4.2:Ext.Ajax.Requestでパラメーターを正しく送信する方法POST

私のDBから何かを削除するには、ExtJsスクリプトからPOSTを実行する必要があります。

Ext.Ajax.request({
    url: 'deleteRole.html',
    method: 'POST',          
    headers: {'Content-Type': 'text/html'},
    waitTitle: 'Connecting',
    waitMsg: 'Sending data...',                                     
    params: {
        "rolename" : rolename
    },
    scope:this,
    success: received,                                    
    failure: function(){console.log('failure');}
});

投稿が送信されると、firebugでフォントのロール名を確認できますが、パラメータとしては確認できません。ユーザー登録に関連する別の投稿(spring:formで作成)を紹介します。投稿を調べると、次のことがわかります。

image
(ソース: subirimagenes.com

そして、@ RequestParamを使用してコントローラーのパラメーターを取得できます。

しかし、問題があるという投稿では、パラメーター部分が表示されず、Font(Fuente)部分しか表示されません。

image2
(ソース: subirimagenes.com

結果として、私のスプリングコントローラーはパラメーターを検出しません。 POSTに問題がありますか?

ありがとうございました

11
mannuk

問題は、元の質問でheaders: {'Content-Type': 'text/html'},という行を使用していることです。これにより、コンテンツが投稿データではなく、text/htmlに設定されます。

11
Reimius

私はそれを次のコードで解決しました:

var rolename = 'myRol';
Ext.Ajax.request({
    url: 'deleteRole.html',
    method: 'POST',          
    params: {
        rolename: rolename
    },
    success: received,                                    
    failure: function(){console.log('failure');}
});
8
mannuk

私はこれをSencha Touchアプリで使用しています。私はjsonDataと呼ばれる追加の設定を追加し、それをtrueにする必要がありました。そうしないと、エンドポイントURLに何も渡されません。

Ext.Ajax.request({
    url: endpoint,
    method : "POST",
    headers: {
        'Content-Type': 'application/json'
    },
    params : {add: formattedAddress, lat: latitude},
    jsonData: true,
    useDefaultXhrHeader : false,
    withCredentials: true,                
    success : function(response) {
        Ext.Msg.alert("Success", 'yea');
    },
    failure : function(response) {
        var respObj = Ext.JSON.decode(response.responseText);
        Ext.Msg.alert("Error", respObj.status.statusMessage);
    }
});
6
paddys_1